设为首页 收藏本站
查看: 1000|回复: 0

[经验分享] docker搭建私有仓库

[复制链接]

尚未签到

发表于 2017-12-5 21:31:22 | 显示全部楼层 |阅读模式
  紧接上一篇镜像发布到官方之后,我们来搭建我们自己的私有仓库,比较,如果真的要在生产环境使用的话,这是必须的。
  
首先,我们来准备一下搭建私有仓库所需要的信息。
#先吧私有仓库down下来,这需要一点时间,刚好这中间的时间,我们可以准备一下其他的东西  
docker pull registry
  紧接着,registry需要https运行环境,所以来生成我们自己的证书(简单说明一下,目前的registry版本是2,之前的1是支持非ssl的,docker在0.9以下。)
  
先交代一下环境:物理机是win10,使用hyper-v 虚拟一个cenots(ip:192.168.50.2)作为我们的docker host。使用内部网络,物理机共享本地网络方式连接上网。私有仓库使用域名local.registry.docker.com,端口:3075。
#创建证书文件夹  
mkdir certs
  
#创建registry登录用户配置文件文件夹
  
mkdir auth
  
#生成我们的ssl证书
  
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/local.registry.docker.com.key -x509 -days 365 -out /certs/local.registry.docker.com.crt
  
#创建一个我们的private registry用户,admin admin 就是账号和密码了。
  
docker run --entrypoint htpasswd registry:2 -Bbn admin admin > /auth/htpasswd
  网络环境还不错的情况下,这个时候pull registry应该也已经完成了。那......
  
然后,把我们的 私有仓库跑起来先
docker run -dit -p 3075:5000 --restart=always --name hub \  -v /auth:/auth \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v /certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/local.registry.docker.com.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/local.registry.docker.com.key \
  registry:2
DSC0000.png

  
解释一下参数:
  
-d:表示容器后台运行
  
-p:端口映射
  
--restart=always:可以理解为开机启动。开机:就是启动docker客户端拉。
  
--name registry:给容器取一个名字,方便识别和记忆
  
-v:挂在本地文件到容器中。命令格式:hostdir:cdir[:rw|ro] 主机目录:容器目录[:读写权限]
  
-v pwd/auth:/auth:挂在本地的密码文件夹
  
-v pwd/certs:/certs:挂在本地的ssl证书文件夹
  -e:设置环境变量参数
  
-e REGISTRY_AUTH:验证方式
  
-e REGISTRY_AUTH_HTPASSWD_REALM:验证域名
  
-e REGISTRY_AUTH_HTPASSWD_PATH:密码文件路径
  
-e REGISTRY_HTTP_TLS_CERTIFICATE:ssl证书文件路径
  
-e REGISTRY_HTTP_TLS_KEY:ssl证书文件路径
  
最后的registry则是镜像的名字了。具体参数什么的,可以参考registry官方文档地址
  
centos docker客户端配置私有仓库信任
#在每个安装docker客户端的机器上执行。将前面搭建私有仓库创建的ssl证书copy到/etc/docker/certs.d/[仓库地址],如果不走这一步,就会收到下下下图的这种错误 x509.......  
mkdir -p /etc/docker/certs.d/local.registry.docker.com:3075
  
cp /certs/local.registry.docker.com.crt  /etc/docker/certs.d/local.registry.docker.com\:3075/
  windows配置私有仓库
  
DSC0001.png
  
在然后,登录到私有仓库
  
DSC0002.png
  
DSC0003.png
  在在然后,吧我们刚才的hello world项目push到我们的本地仓库
  
docker tag imageid imagename:给镜像打个tag,然后push这个tag到本地仓库。
  
DSC0004.png
  
在在在然后,把我们的私有仓库的hello world跑起来
  
DSC0005.png
  在在在在然后,在文章的最后,我们在装一个私有仓库web ui浏览工具(hyper/docker-registry-web):
  
DSC0006.png
  
本来想安装一个web ui管理工具:konradkleine/docker-registry-frontend,但是......,奈何......启动提示 no mpm loaded 错误。详见问题描述及解决办法https://github.com/kwk/docker-registry-frontend/issues/88。不想折腾了,索性安装另外一个web ui 浏览工具
  
话说web ui还是有好几个的,排在最前面的3个ui镜像,第一个安装有错误,要特殊处理,那我们就安装第二个好了......
  
DSC0007.png
docker run -dit -p 8899:8080 --restart=always --name registry-web-manager --link registry -e REGISTRY\_BASIC\_AUTH="YWRtaW46YWRtaW4=" -e REGISTRY\_TRUST\_ANY\_SSL=true -e REGISTRY\_URL=https://local.registry.docker.com:3075/v2/ -e REGISTRY\_NAME=https://local.registry.docker.com:3075 --add-host local.registry.docker.com:192.168.50.2 hyper/docker-registry-web  安装脚本参数解释
  
--link registry:容器之间建立联系,个人猜测,起始不需要,因为没用到.......
  
-e REGISTRY_BASIC_AUTH:连接到私有仓库的账号密码base64结果(base64(username:password))。所以为什么仓库为什么要选择htpasswd验证方式了。
  
-e REGISTRY_TRUST_ANY_SSL:忽略ssl错误,因为我们用的是自签名的ssl证书
  
-e REGISTRY_URL:仓库访问地址
  
-e REGISTRY_NAME:仓库名
  
--add-host local.registry.docker.com:192.168.50.2:增加一条本地host。指示对我们local.registry.docker.com的访问解析到我们的docker host机器上,这样,在我们的web ui容器中访问我们的私有仓库地址时,才能正确解析。
  
这几天的学习和折腾就暂时到这里了,后续在研究一下docker-compose容器编排和自动构建部署。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-420955-1-1.html 上篇帖子: docker镜像文件导入与导出 下篇帖子: docker笔记-docker-run
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表