前言

在折腾 docker 的路上,必然会遇到拉取镜像速度不理想的问题,在加上可能会需要私有的镜像仓库.而使用 docker 官方的 registry 镜像来部署服务就可以解决此两种需求.

需要注意的是 : 镜像加速和私有仓库两种需求需要分别部署.
镜像加速缓存功能需要实时比对官方镜像仓库的版本,所以当私有镜像docker push到该仓库时由于无法和官方仓库中比对,会导致一直Retrying无法上传.

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

私有镜像仓库部署

部署 registry

docker run -d --name registry --restart always \
    -p 5000:5000 \
    -v /data/registry:/var/lib/registry \
    registry:2

客户端配置 daemon.json

镜像仓库可以提供给局域网其他客户端使用,同时也可以提供给公网用户使用.只需要配置客户端daemon.jsoninsecure-registries参数.

例如 registry 所在服务器内网 IP 为 192.168.1.5 ,供内网使用.

{
    "insecure-registries": [
      "192.168.1.5:5000"
    ]
}

例如 registry 所在服务器公网 IP 为 101.102.103.104 ,且防火墙开放了 5000 端口.

{
    "insecure-registries": [
      "101.102.103.104:5000"
    ]
}

配置完成需重载 daemon 并重启 docker

sudo systemctl daemon-reload
sudo systemctl restart docker

通过 ngixn 反向代理配置域名

当镜像仓库通过 nginx 配置了反向代理域名,则客户端无需额外配置 daemon.json .

push & pull

标记镜像 docker tag

docker tag imagename 192.168.1.5:5000/imagename:latest
# 或
docker tag imagename registry.yourdomain.com/imagename:latest
# 无需加 HTTP/HTTPS

推送镜像 docker push

docker push 192.168.1.5:5000/imagename:latest
# 或
docker push registry.yourdomain.com/imagename:latest
# 无需加 HTTP/HTTPS

拉取镜像 docker pull

docker pull 192.168.1.5:5000/imagename:latest
# 或
docker pull registry.yourdomain.com/imagename:latest
# 无需加 HTTP/HTTPS

  

镜像加速缓存部署

单纯的 docker 镜像加速也可以参考以下文章配置即可,无需单独部署 registry .
配置Docker中国官方镜像加速教程

部署 registry

在网络条件更好的服务器上,通过挂载目录持久化保存镜像数据缓存,方便后续使用.

docker run -d --name registry --restart always \
    -p 5000:5000 \
    -v /data/registry:/var/lib/registry \
    -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
    registry:2

-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io
为指定上游远程镜像仓库为官方镜像仓库.

通过 ngixn 反向代理配置域名

推荐为加速镜像仓库服务使用反向代理来配置域名和证书使用.

客户端配置 daemon.json

客户端配置daemon.jsonregistry-mirrors参数来指定加速镜像仓库.

例如 registry 所在服务器公网 IP 为 101.102.103.104 ,且防火墙开放了 5000 端口.注意此处需要明确填写 http 协议.

{
    "registry-mirrors": [
      "http://101.102.103.104:5000"
    ]
}

例如 已为 registry 配置了域名及证书.注意此处需要明确填写 http/https 协议.

{
    "registry-mirrors": [
      "https://registry.yourdomain.com"
    ]
}

配置完成需重载 daemon 并重启 docker

sudo systemctl daemon-reload
sudo systemctl restart docker

结语

关于 registry 镜像,博主也才使用一段时间,更多的用法,安全配置,参数,功能可以参考官方文档.

本文为 Stille 原创文章.经实践,测试,整理发布.如需转载请联系作者获得授权,并注明转载地址.

本文链接 https://www.ioiox.com/archives/127.html

如果喜欢我的文章,觉得对你有帮助,请随意赞赏!