部署 Docker Registry

瞳人


发布于 Nov. 10, 2015, 10:20 p.m.

0 个评论

Docker Registry


记录部署一个 Docker Registry 的过程.

目的很明确, 要部署一个 docker registry:

  1. 有证书支持.
  2. 带用户名密码验证.

域名证书

首先你要有个域名..... 可以去 Namecheap 注册.

然后证书可以去 comodo 注册一个, 很便宜, 一年 $9. 点此链接直达

首先要在服务器上生成一个 CSR, 可以参考 comodo 官方文档. 这一步中间的 mydomain.key 后面也要拷贝到服务器上.

然后就填写相关信息就行了. (有空我会写个博客详细说一下怎么弄......) 一步一步到最后就可以得到你的证书了. 主要用到两个文件: mydomain.ca-bundlemydomain.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


Leave a Comment:

博客搜索

友情链接

公告

本博客代码已经公布在 Github 上,欢迎交流指正。

QQ 邮箱对 mailgun 不太友好, 所以使用 QQ 邮箱的评论, 可能会无法及时收到邮件。我会尽快寻找其他解决方案的。

本人现在独自使用 linode vps, 20 美元/月, 感觉压力大, 如果有意一起合租, 可以联系我. 在我的任意一篇文章下面留言即可. 关于使用方式, 现在倾向于使用 docker.