前言
境内无法拉取 Docker 镜像是老生常谈的问题了,趁着 2026 年重新整理云服务器和基础设施再部署一次。
方案概述
- 使用 Docker 启动
Registry镜像加速服务 - 使用
Caddy来管理 TLS 证书 - 拉取测试
详细步骤
一、使用 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
之后拉取镜像就会自动使用镜像加速服务了。
结束。