首先要加速的有能访问到docker hub的代理地址,或外网服务器,否则只能作为普通的私有仓库。
第一步:配置本地 Docker 使用代理(以便拉 registry
镜像)
mkdir -p /etc/systemd/system/docker.service.d
创建 /etc/systemd/system/docker.service.d/proxy.conf
:
[Service]
Environment="HTTP_PROXY=http://192.168.88.113:8080"
Environment="HTTPS_PROXY=http://192.168.88.113:8080"
Environment="NO_PROXY=localhost,127.0.0.1,::1"
然后重新加载并重启 Docker:
systemctl daemon-reexec
systemctl daemon-reload
systemctl restart docker
第二步:拉取 registry 镜像
成功后继续下一步。
第三步:准备 registry 配置文件
mkdir -p /opt/registry
cat > /opt/registry/config.yml <<EOF
version: 0.1
proxy:
remoteurl: https://registry-1.docker.io
log:
fields:
service: registry
storage:
filesystem:
rootdirectory: /var/lib/registry
http:
addr: 0.0.0.0:5000
headers:
X-Content-Type-Options: [nosniff]
EOF
第四步:启动 registry 容器(通过代理 + host 网络)
docker run -d \
--name registry \
--network=host \
-v /opt/registry/config.yml:/etc/docker/registry/config.yml \
-v registry-data:/var/lib/registry \
-e HTTP_PROXY=http://192.168.88.113:8080 \
-e HTTPS_PROXY=http://192.168.88.113:8080 \
registry:2
解释:
--network=host
:因为你提到容器下 HTTP 有限制,必须 host 网络
-e HTTP_PROXY=...
:让 registry 容器能通过代理访问 Docker Hub
proxy.remoteurl
:启用缓存代理(pull-through cache)
第五步:配置 LXC 容器内的 Docker 客户端使用本地 registry 镜像加速
编辑 /etc/docker/daemon.json
:
{
"registry-mirrors": ["http://localhost:5000"]
}
然后重启 Docker:
第六步:测试加速效果
如果成功:
第一次拉取走 registry 容器代理,并缓存
第二次就从 registry 本地直接返回
你还可以执行:
验证 registry 是否缓存了镜像。
curl http://192.168.88.103:5000/v2/_catalog
{"repositories":["library/alpine"]}
验证 registry 是否缓存了镜像。
第七步(可选):registry 容器设置自启动
docker update --restart=always registry
或者下次运行加上 --restart=always
。
尊重作者,转载请注明出处!
版权申明:本文版权归作者所有,未经授权,任何单位或个人不得以任何形式转载、摘编或利用其它方式使用本博客内容。作者保留追究相关法律责任的权利。如需使用博客内容,请与作者联系获得授权。感谢对本文的尊重与支持。
免责声明:本网站所载内容仅供参考,不构成任何专业建议。用户基于本网站内容作出的决策,风险自担。对于因使用本网站内容而产生的任何直接或间接损失,本网站不承担任何责任。请用户审慎判断,理性使用。