本文将介绍在 Docker Hub 国内访问受限的背景下,如何通过购买国外服务器并部署 Docker-Proxy 项目,快速搭建一个稳定可靠的私有 Docker 镜像加速服务。
1.安装dockerhub加速和ui
注意: 你需要对哪个镜像仓库进行加速,就下载哪个配置。docker-compose.yaml文件默认是部署所有的国外镜像仓库的加速服务,同样也是你部署哪个就配置哪个,其余的删除掉即可!
- 下载config目录下对应的yml文件到你本地机器上
- 下载docker-compose.yaml文件到你本地机器上,和上面的文件在同级目录下
- 启动服务,只需要dockerhub就可以了,ui界面非必要
docker compose up -d dockerhub docker compose up -d registry-ui - 到这一步已经可以通过ip:port方式访问了
2.申请ssl证书
使用acme.sh和cloudflare dns申请域名证书
2.1 修改默认ca
由于最新acme.sh脚本默认ca变成了zerossl,现执行下面命令修改脚本默认ca为letsencrypt
acme.sh --set-default-ca --server letsencrypt
2.2 创建Cloudflare Api令牌
登录cloudflare官网后,点击头像进入个人信息页面,创建令牌,选择编辑区域DNS模板,添加区域-DNS-编辑和区域-区域-读取权限,区域资源里面选择包括-账户的所有区域-你的账户。
注意此令牌token只会出现一次,切记保存,切记保存,切记保存!!!
2.3 申请ssl证书
# 执行此命令设置变量的值,acme.sh脚本执行过程会读取
export CF_Token="xxxxxxx"
export CF_Account_ID="aaaaaaa"
# 此项非必须,上面两项需要提供
export CF_Zone_ID="bbbbbbbb"
# 申请证书
acme.sh --issue -d dockerhub.xxxx.com --dns dns_cf -k ec-256
2.4 安装证书到指定位置
假定linux主机里已有/root/ssl目录,现在要把证书和key安装到此目录下,那么执行下面的命令即可:
acme.sh --installcert -d dockerhub.xxxx.com --fullchain-file /root/ssl/dockerhub.xxxx.com.crt --key-file /root/ssl/dockerhub.xxxx.com.key --ecc
3.配置Nginx反向代理
- 下载仓库下的nginx配置文件registry-proxy.conf到你的nginx服务的conf.d目录下
- 这里只需要dockerhub和ui相关内容,多余部分删除
- 修改配置里的域名和证书部分
4.使用方法
方式1:直接使用
原拉取镜像方式
docker pull library/alpine:latest
加速拉取镜像命令
# 将前缀改为你申请的dockerhub的域名
docker pull dockerhub.xxxx.com/library/alpine:latest
方式2:设置镜像源
设置镜像源
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://dockerhub.xxxx.com"]
}
EOF
重新加载配置
sudo systemctl daemon-reload
重启docker
sudo systemctl restart docker