Skip to content
Go back

使用 Docker 启动 Registry 镜像加速服务并使用 Caddy 进行 TLS 证书管理

| 0 Views Edit page

前言

境内无法拉取 Docker 镜像是老生常谈的问题了,趁着 2026 年重新整理云服务器和基础设施再部署一次。


方案概述

  1. 使用 Docker 启动 Registry 镜像加速服务
  2. 使用 Caddy 来管理 TLS 证书
  3. 拉取测试

详细步骤

一、使用 Docker 启动 Registry 镜像加速服务

安装 Docker 参考:Ubuntu 20.04 从官方源安装最新的 Docker

docker run -d \
  --name registry \
  --restart unless-stopped \
  -p 5000:5000 \
  -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
  registry:3

二、使用 Caddy 来管理 TLS 证书

首先去域名注册商处将你的域名解析到服务器的 IP 地址上,并确保服务器的 80 和 443 端口对外开放,以便 Caddy 能够成功申请 TLS 证书。
安装 Caddy 的话,可以参考官方文档:安装 Caddy

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
sudo chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

然后在 /etc/caddy/Caddyfile 中添加以下配置:

nano /etc/caddy/Caddyfile
# 替换为你的域名
yourdomain.com {
    reverse_proxy localhost:5000
}

保存后,重启 Caddy 服务:

sudo systemctl reload caddy
sudo systemctl restart caddy

你可以通过访问 https://yourdomain.com/v2/_catalog 来测试一下是否成功搭建了 Docker Registry 镜像加速服务,并且已经启用了 TLS 证书:

curl -k https://yourdomain.com/v2/_catalog

理论上应该能看到类似于以下的响应:

{}

三、拉取测试

在任意机器上拉取容器测试一下:

docker pull yourdomain.com/library/hello-world:latest

四、配置 Docker 的默认镜像地址

nano /etc/docker/daemon.json

修改为:

{
  "registry-mirrors": [
    "https://yourdomain.com"
  ]
}

重启 Docker 服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

之后拉取镜像就会自动使用镜像加速服务了。

结束。


Edit page