版本: Docker version 18.03.1-ce, build 9ee9f40
参考官方文档:
https://docs.docker.com/samples/library/registry/#run-a-local-registry-quick-version
https://docs.docker.com/registry/deploying/
https://docs.docker.com/registry/insecure/
下载registry镜像
docker pull registry
去海外默认地址下载, 网上说有墙,但我用着是没墙,可以下载。
启动镜像
创建宿主机保存镜像的目录
mkdir -p /root/my_docker_registry
启动 服务
docker run -d -p 5000:5000 --restart always -v /root/my_docker_registry:/var/lib/registry registry
[root@node205 my_docker_registry]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5b0159edad4b registry "/entrypoint.sh /etc…" 6 seconds ago Up 4 seconds 0.0.0.0:5000->5000/tcp eloquent_poincare
可以使用 docker inspect 5b0159edad4b 查看该registry的详细信息。
验证及配置
- 直接push一个镜像
[root@node205 my_docker_registry]# docker push node205:5000/hello-world
The push refers to repository [node205:5000/hello-world]
An image does not exist locally with the tag: node205:5000/hello-world
需要先打tag 。
- 打tag 后push
docker tag hello-world node205:5000/hello-world
[root@node205 my_docker_registry]# docker push node205:5000/hello-world
The push refers to repository [node205:5000/hello-world]
Get https://node205:5000/v2/: Gateway Timeout
或者
[root@node205 docker]# docker push 10.30.16.205:5000/hello-world
The push refers to repository [10.30.16.205:5000/hello-world]
2b8cbd0846c5: Retrying in 1 second
received unexpected HTTP status: 501 Unsupported method ('POST')
报错原因: 私有仓库默认使用 https , 需要配置为使用http ; 另外,本环境使用了外网代理, 发现连接私有仓库会通过代理,需要配置不走代理。
参见官网: https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry
https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
- /etc/docker/daemon.json 编辑
{
"insecure-registries" : ["myregistrydomain.com:5000"]
}
(通过日志发现,当启用insecure-registries时,会先尝试https ,不通,再使用http进行处理。 生产环境不建议使用之。)
- 配置本地地址不走代理
编辑/etc/systemd/system/docker.service.d/http-proxy.conf 和 /etc/systemd/system/docker.service.d/https-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,node205"
- 重启服务
systemctl daemon-reload
systemctl restart docker
网页验证
http://10.30.16.205:5000/v2/_catalog
可以看到 {"repositories":["hello-world"]}
其他节点配置使用
配置代理中增加NO_PROXY, 同master上配置
配置daemon.json ,同master上配置
使用 docker pull 或push 从私有仓库中下载或上传