作者: 耗子007
搭建非安全Registry
Docker官方hub上面已提供容器化的Registry,可以通过docker run直接启动一个本地的Registry的服务。
1 | docker run -d -p 5000:5000 \ |
上传镜像的方法:
1 | docker pull ubuntu |
可以通过数据卷的方式,把上传的docker镜像保存到指定的host目录:
1 | docker run -d -p 5000:5000 --restart=always --name registry \ |
跨机器访问非安全Registry
跨机器访问非安全的Registry,需要对机器的Docker daemon的启动参数进行设置,设置方法取决于docker daemon的启动方式。
以Ubuntu为例:
- 修改/etc/default/docker文件
- 添加DOCKER_OPTS=”–insecure-registry myregistrydomain.com:5000”,以myregistrydomain.com为例,也可以是IP地址
- 重启Docker daemon服务
搭建安全Registry
首先,需要对openssl的配置做一些修改:
- Ubuntu配置文件: /etc/ssl/openssl.cnf
- Redhat配置文件: /etc/pki/tls/openssl.cnf
注:在上面的配置文件的[ v3_ca ]标签下面加上subjectAltName=IP:192.168.1.181 <192.168.1.181为当期机器的IP>
参考文章:http://dockone.io/article/684
可以通过openssl生成自己的证书和密钥,用来验证。生成证书的方法:
1 | mkdir -p /certs && openssl req \ |
关于openssl生成密钥的办法还有下面的:
1 | $ echo subjectAltName = DNS:$HOST,IP:10.10.10.20,IP:127.0.0.1 > extfile.cnf |
参考文档:https://docs.docker.com/engine/security/https/
生成账号密码:
1 | mkdir auth |
用生成的证书和密钥启动Registry的服务:
1 | docker run -d -p 5000:5000 --restart=always --name registry \ |
跨机器访问安全Registry
把Registry机器上生成的证书文件domain.crt拷贝到指定目录(取决于系统类型):
- Ubuntu /etc/docker/certs.d/myregistrydomain.com:5000/ca.crt
- Redhat系统 /etc/pki/ca-trust/source/anchors/myregistrydomain.com:5000.crt,并更新证书update-ca-trust
然后重新启动Docker daemon的服务。
最后,可以push镜像了。
1 | docker pull ubuntu |