之前一直使用Nexus管理Docker镜像,后期发现Nexus对于Docker的支持并不是很完善,踩了许多坑(踩过的坑稍后也会发文上来,但估计也要过些时间了)。主要是因为上传到Nexus的镜像无法物理删除的问题让我转战Docker Registry。将使用过程记录下,给他人和自己都做个参考。
Docker Registry的官方文档:https://docs.docker.com/registry/#basic-commands
在一台通公网的机器上安装了docker后即可安装并使用Docker Registry了。注意:官方文档中称Docker Registry可以和Docker1.6+版本进行兼容。本机安装了docker的1.12版本。
一、安装
$ docker version
Client:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Tue Jan 10 20:20:01 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Tue Jan 10 20:20:01 2017
OS/Arch: linux/amd64
启动Docker Registry
$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
查看容器情况
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48f9c909cb76 registry:2 "/entrypoint.sh /etc/" 3 hours ago Up 14 minutes 0.0.0.0:5000->5000/tcp registry
打开浏览器,输入host:port/v2,界面为如下图片的时候说明Docker Registry已经起来了。
注意:官网称这样部署的Docker Registry只能用于测试。如果是生产用,需要进行TLS认证。生产环境的部署手册参考 configuration guide
#停掉Docker registry
$ docker container stop registry
二、客户机器访问Docker Registry
修改/etc/docker/daemon.json文件
$ vim /etc/docker/daemon.jsoninsecure-registries
{
"insecure-registries":["10.xxx.xx.xxx:5000"]
}
退出并保存。
重载daemon.json,重启docker
$ systemctl daemon-reload
$ systemctl restart docker