docker registry-v2 搭建私有仓库
博客专区 > modprobe 的博客 > 博客详情
docker registry-v2 搭建私有仓库
modprobe 发表于2年前
docker registry-v2 搭建私有仓库
  • 发表于 2年前
  • 阅读 223
  • 收藏 1
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

参考官方文档:https://docs.docker.com/registry/deploying/

参考 :http://www.tuicool.com/articles/6jEJZj

 

本例子使用两台centos7虚拟机作为测试
node0:192.168.56.101
node1:192.168.56.102
 
使用域名搭建https的私有仓库
 
1、node1作为私服服务器 配置 node0 node1 和主机的hosts映射
192.168.56.102 lhdocker.com
 
既然使用https,那么我们需要生成证书,本文讲解的是使用openssl自签名证 书,当然也可以使用诸如 Let’s Encrypt 等工具生成证书,首先在node1机 器上生成key:
 
mkdir -p ~/registry/certs cd ~/registry/certs openssl genrsa -out lhdocker.com.key 2048

 

生成密钥文件:
 
openssl req -newkey rsa:4096 -nodes -sha256 -keyout lhdocker.com.key -x509 -days 365 -out lhdocker.com.crt
输入信息
Country Name (2 letter code) [XX]:86 State or Province Name (full name) []:Beijing Locality Name (eg, city) [Default City]:Changping Organization Name (eg, company) [Default Company Ltd]:modprobe Organizational Unit Name (eg, section) []:modprobe Common Name (eg, your name or your server's hostname) []:lhdocker.com
Email Address []:xxxxx@xxx.com
 
这样自签名证书就制作完成了。
由于是自签名证书,默认是不受Docker信任的,故而需要将证书添加到Docker 的根证书中,Docker在CentOS 7中,证书存放路径是 :
 
node1 端:
mkdir -p /etc/docker/certs.d/lhdocker.com cp lhdocker.com.crt /etc/docker/certs.d/lhdocker.com/
 
node0端:
scp root@lhdocker.com:/etc/docker/certs.d/lhdocker.com/lhdocker.com.crt /etc/docker/certs.d/lhdocker.com/
 
拉取registry2 镜像
docker pull registry:2

 

启动registry2容器

docker run -d -p 443:5000 --restart=always --name registry \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/lhdocker.com.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/lhdocker.com.key \ registry:2

 

测试一下

docker pull kitematic/hello-world-nginx docker tag kitematic/hello-world-nginx lhdocker.com/kitematic/hello-world-nginx docker push lhdocker.com/kitematic/hello-world-nginx

如果成功,你会看到如下输出

 

在node0上进行测试

docker pull lhdocker.com/kitematic/hello-world-nginx

到这里我们的docker私有仓库就搭建完成了

 

 

这是没有认证方式的启动方式

在很多场景下,我们需要用户登录后才能访问私有仓库,那么我们可以如下操作: 建立在上文生成证书,同时重启过Docker服务的前提下,我们讲解一下如何配置: 

cd ~/registry/
mkdir auth docker run --entrypoint htpasswd registry:2.2 -Bbn lihong 1233 > auth/htpasswd;

 

启动registry容器的方式有一点区别

docker run -d -p 443: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/lhdocker.com.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/lhdocker.com.key \ registry:2

 

在执行push操作之前需要登录一下

docker login lhdocker.com

输入上面的用户和密码就可以了

 

 

 如果要停止registry服务,执行下面的命令就行了
docker stop registry && docker rm -v registry

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 35
码字总数 0
×
modprobe
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: