前言
此篇不是搭建镜像私有仓的记录,而是提供 Docker Hub 的镜像缓存,方便快速拉取镜像(不支持push)。
关于registry mirror原理或以docker部署此镜像服务,请参考引用文章。
本文仅记录了以systemd方式部署,系统是:中标麒麟V6,X86(= CentOS 7)。
部署
1.下载
请转至 docker distribution 选择一个版本下载打包好的压缩文件,
比如registry_2.8.1_linux_amd64.tar.gz
上传到服务器解压,将 registry
移动到 /sbin 下:
tar zxf registry_2.8.1_linux_amd64.tar.gz registry
mv registry /sbin
2.配置
建立systemd管理文件,编写registry配置文件(下述供参考,请根据实际修改):
cat > /lib/systemd/system/registry.service <<'EOF'
[Unit]
Description=DockerHub Registry Mirrors
Documentation=https://hub.docker.com
After=network.target
[Service]
User=nobody
ExecStart=/sbin/registry serve /data/registry/config.yml
Restart=on-failure
RestartSec=5s
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
mkdir -p /data/registry && chown -R nobody.nobody /data/registry
cat > /data/registry/config.yml <<'EOF'
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /data/registry
http:
addr: 127.0.0.1:5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
proxy:
remoteurl: https://registry-1.docker.io
EOF
3.启动服务
systemctl daemon-reload
systemctl start registry
systemctl enable registry
如无意外,应该可以看到端口监听和进程。
4.Nginx代理[可选]
镜像服务监听 5000 端口,可以用nginx代理下,直接用域名或80端口标准化访问:
location /v2/ {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
使用
假设镜像地址是: http://docker-mirror.saintic.com
使用 upstart 的系统
如Ubuntu 14.04、Debian 7 Wheezy、CentOS 6,在 DOCKER_OPTS 中配置Hub地址:
DOCKER_OPTS="--registry-mirror=http://docker-mirror.saintic.com"
使用 systemd 的系统
如Ubuntu 16.04+、Debian 8+、CentOS 7, 在配置文件 /etc/docker/daemon.json 中加入:
{
"registry-mirrors": ["http://docker-mirror.saintic.com"]
}
检查 Docker Hub 是否生效
在命令行执行 docker info ,如果从结果中看到了如下内容,说明配置成功。
Registry Mirrors:
http://docker-mirror.saintic.com