部署 Docker Registry
由 瞳人
发布于 Nov. 10, 2015, 10:20 p.m.
0 个评论
记录部署一个 Docker Registry 的过程.
目的很明确, 要部署一个 docker registry:
- 有证书支持.
- 带用户名密码验证.
域名证书
首先你要有个域名..... 可以去 Namecheap 注册.
然后证书可以去 comodo 注册一个, 很便宜, 一年 $9. 点此链接直达
首先要在服务器上生成一个 CSR, 可以参考
comodo 官方文档.
这一步中间的 mydomain.key
后面也要拷贝到服务器上.
然后就填写相关信息就行了. (有空我会写个博客详细说一下怎么弄......)
一步一步到最后就可以得到你的证书了.
主要用到两个文件: mydomain.ca-bundle
和 mydomain.crt
.
使用如下命令将上面连个文件合并成一个.
1 | cat mydomain.crt mydomain.ca-bundle >mydomain.crt |
部署
创建一些文件夹.
1 | mkdir -p /root/registry/{data,certs,auth} |
将我们上一步得到的 mydomain.key
和合成的mydomain.crt
文件拷贝过去.
1 | cp mydomain.crt mydomain.key /root/registry/certs/ |
我们采用最简单的类似于 web server 验证机制的验证方法. 首先生成用户名密码.
1 | docker run --entrypoint htpasswd registry:2 -Bbn testuser testpassword > /root/registry/auth/htpasswd |
然后使用下面的 docker-compose.yml
来运行 registry.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | registry: image: registry:2 restart: always ports: - 5000:5000 environment: - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/mydomain.crt - REGISTRY_HTTP_TLS_KEY=/certs/mydomain.key - REGISTRY_AUTH=htpasswd - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm volumes: - /root/registry/data/:/var/lib/registry/ - /root/registry/certs/:/certs/ - /root/registry/auth/:/auth/ |
测试
在本机或其他机器上测试登录:
1 | docker login mydomain:5000 |
能够登录成功就说明没啥问题. 接着就可以测试 push 之类的.
1 2 | docker tag ubuntu:14.04 mydomain:5000/ubuntu:14.04 docker push mydomain:5000/ubuntu:14.04 |
0 Comments