一、 背景介绍
默认条件下,Docker 从 Docker Hub 拉取镜像,速度往往不尽人意;
我们一般通过配置国内加速代理,如 DaoCloud,来提升 pull 速度,改善体验;
本文介绍 DaoCloud 技术的本地私有实现,搭建私有 Docker Mirror.
二、配置步骤
2.1 编写配置文件 config.yml
最后的 remoteurl 指向要代理的目标仓库地址,我们这里直接使用 Docker Hub 地址
尝试代理 DaoCloud 地址,木有成功,暂且放弃 - _-|||
username 和 password 是可选的, 假如配置,就能不仅访问公有镜像,还能访问用户私有镜像
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
proxy:
remoteurl: https://registry-1.docker.io
username: [username]
password: [password]
2.2 启动 Mirror 服务容器
该命令将宿主机 /data 目录映射到容器中,作为镜像存储目录,对外服务端口为 5000
注意这里需要保证本地主机能够正常访问 https://registry-1.docker.io
考虑到我的宿主机网路受限,在这里通过 -e 参数传入了代理服务器(Squid)地址,按需配置即可
# docker run -d --restart=always \
--name mirror \
-p 5000:5000 \
-e HTTP_PROXY=http://192.9.100.127:3128 \
-e HTTPS_PROXY=http://192.9.100.127:3128 \
-v /data:/var/lib/registry \
-v $PWD/config.yml:/etc/registry/config.yml \
registry:2.5 /etc/registry/config.yml
2.3 修改客户端 Docker 启动参数,使其使用我们配置的 Mirror 代理
方法一:
修改 /lib/systemd/system/docker.service, 在 ExecStart=/usr/bin/dockerd 之后追加 mirror 地址
IP 即为 Mirror 容器所在宿主机 IP,端口即为 -p 参数指定的 5000
ExecStart=/usr/bin/dockerd --registry-mirror=http://192.168.204.137:5000 -H fd://
方法二:
编辑 /etc/docker/daemon.json (没有就创建一个)
{
"registry-mirrors": ["http://192.168.204.137:5000"]
}
配置完成后,重启 docker 服务,使其生效
# systemctl daemon-reload
# systemctl restart docker
2.4 客户端执行 docker pull 验证
# docker pull ubuntu:14.04
