docker搭建私有仓库v2(Private Registry v2),自签发证书、公网访问、登录认证

如果不用自签发的证书,直接照着官方的步骤做就是了,已经很直白,但是如果需要用自签发的证书,稍微就比较麻烦,特别在用mac版的docker的时候有点坑,不过最后还是搭建成功了,现来分享下经验。

假设registry的域名准备用hub.domain.com(后面出现它的地方均替换为你自己要用的域名),先ssh登录服务器,执行下面的步骤:
1. 先生成自签发证书,执行下面的命令:

mkdir -p certs && openssl req \
   -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
   -x509 -days 99999 -out certs/domain.crt

在Common Name那里输入域名,其它喜欢怎么填就怎么填:
自签发证书

2. 创建用户名密码:

mkdir auth
docker run --entrypoint htpasswd registry:2 -Bbn testuser testpassword > auth/htpasswd

testusertestpassword分别替换成你需要的registry登录名和密码

3. 启动Registry:

docker run -d -p 5000:5000 --restart=always --name registry \
  -v `pwd`/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/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2

如果没有registry镜像会自动下载然后启动,或者可以先执行docker pull registry:2将其事先下载下来,速度慢的话请用加速器。

好了,registry服务端算是搭建好了,但是如果其它客户端直接docker login hub.domain.com:5000 的话会报错,比如:x509: certificate signed by unknown authority

下面对其它需要用到registry的docker服务器或开发机器进行一些操作:
注:如果DNS没有hub.domain.com的记录,就需要在每个docker客户端所在机器修改hosts文件,将registry的ip地址映射到hub.domain.com

我们还需要让所有机器信任自签发的registry,不然登录会报错。

  1. 将之前registry服务器上生成的certs/domain.crt复制到当前机器,命名为ca.crt
  2. 建立文件夹并将ca.crt拷进去:
mkdir -p /etc/docker/certs.d/hub.domain.com:5000
cp ca.crt /etc/docker/certs.d/hub.domain.com\:5000/

注:如果是macOS版的docker也是一样的操作,尽管它连/etc/docker都不存在,别担心,照做就是了。另外,macOS的用户还需要额外执行下面的命令:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt

OK,接下来可以测试下:

docker login hub.domain.com:5000

输入登录名和密码。如果提示Login Succeeded,恭喜你,大功告成!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值