registry v2 多用户问题
我想利用docker registry v2 版本,搭建一个多用户的私有 docker hub。
对于多用户-用户名密码问题,docker registry 支持通过对REGISTRY_AUTH、REGISTRY_AUTH_HTPASSWD_REALM、REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd 三个参数的配置,来管理
生成了用户名zxc和密码zxc
docker run --entrypoint htpasswd registry:2.2 -Bbn zxc zxc >> auth/htpasswd启动registry
docker run -d -p 5555:5000 --link=registry-redis -e REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=redis -e REGISTRY_REDIS_ADDR=REDIS_PORT_6379_TCP_ADDR:6379 --restart=always --name registry -vpwd
/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v pwd
/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key -v /data:/var/lib/registry registry:2.2遇到的问题是:
官方说“The htpasswd file is loaded once, at startup”,每次往这个htpasswd文件生成一个新的用户名密码,都要重启registry。
我经过测试,也发现,必须重启registry,新增加的用户名和密码,才能在 docker login 时被识别出来,不重启的话,登录会失败。
有没有什么办法,让用户注册用户名密码后,不需要重启registry吗?
多谢!!!!
4 个回复
[已注销]
赞同来自: zhengxiaochuan 、zhengyun
谢邀。
有两种方法
<ol><li>registry 可以通过 nginx 和 apache 做一个代理的 authentication,可以参考https://github.com/docker/dist ... gt%3B用 token server 的方式实现比较高级的 authentication ,文档可以参考 https://github.com/docker/dist ... en.md 不过需要自己手动实现,或者直接使用一个开源实现 https://github.com/SUSE/Portus ... gt%3B
以上
analyser
赞同来自: zhengxiaochuan
你使用的是 distribution 内建的验证机制,除非它提供方便的机制来 reload 用户名密码库文件,否则就是它所讲的,一定得重启。
你可以考虑加一层 proxy,比如跑一个 nginx,在这层做验证
对于nginx来说,basic auth信息的更新无需reload或restart service
https://github.com/docker/dist ... nx.md
zhengxiaochuan - 京东-云平台南京研发中心-JDOS团队
赞同来自:
多谢两位的回答。nginx代理的方式确实可以,本来以为registry v2自己能搞定呢。
另外,请问oilbeater ,灵雀云是采用的哪种办法,1 or 2? 还有,CA证书是向机构购买的吗?
再次感谢。
zhengxiaochuan - 京东-云平台南京研发中心-JDOS团队
赞同来自:
另外,提供一个介绍 registry auth token 机制的文章
http://dockone.io/article/845