紧接上一篇镜像发布到官方之后,我们来搭建我们自己的私有仓库,比较,如果真的要在生产环境使用的话,这是必须的。
首先,我们来准备一下搭建私有仓库所需要的信息。

#先吧私有仓库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


解释一下参数:
-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配置私有仓库

在然后,登录到私有仓库

在在然后,吧我们刚才的hello world项目push到我们的本地仓库
docker tag imageid imagename:给镜像打个tag,然后push这个tag到本地仓库。

在在在然后,把我们的私有仓库的hello world跑起来

在在在在然后,在文章的最后,我们在装一个私有仓库web ui浏览工具(hyper/docker-registry-web):

本来想安装一个web ui管理工具:konradkleine/docker-registry-frontend,但是......,奈何......启动提示 no mpm loaded 错误。详见问题描述及解决办法https://github.com/kwk/docker-registry-frontend/issues/88。不想折腾了,索性安装另外一个web ui 浏览工具
话说web ui还是有好几个的,排在最前面的3个ui镜像,第一个安装有错误,要特殊处理,那我们就安装第二个好了......

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容器编排和自动构建部署。

docker搭建私有仓库相关推荐

  1. Windows系统用Docker搭建私有仓库

    Windows系统用Docker搭建私有仓库 一.安装Docker Desktop 二.创建私有仓库 三.验证私有仓库是否创建成功 一.安装Docker Desktop 1.1.可以在软件管家安装这个 ...

  2. docker搭建私有仓库笔记

    为什么80%的码农都做不了架构师?>>>    安装之前需要docker环境,安装docker环境参考:http://www.runoob.com/docker/centos-doc ...

  3. docker 搭建私有仓库registry (多用户)

    Docker Registry v2 + Token Auth Server (Registry v2 认证) 环境:虚拟机中的centos 1,创建目录(基于/data/目录下) auth_serv ...

  4. docker 搭建私有仓库

    https://www.cnblogs.com/lasdaybg/p/9768445.html

  5. Docker容器私有仓库——Harbor私有仓库的搭建

    Docker容器私有仓库--Harbor私有仓库的搭建 一.Harbor介绍 1.Harbor概念 2.Harbor的核心组件 3.Harbor的优点 二.Harbor搭建的环境准备 1.当前Harb ...

  6. Docker入门之四搭建私有仓库

    前面学习了下镜像和容器,今天来学习下仓库,来搭建本地私有仓库.当然可以使用远程的共有的仓库,但在企业中有的还是放在本地,所以需要搭建私有仓库. 一.搭建仓库 可以在容器中run一个仓库镜像. dock ...

  7. 【Docker】Registry搭建私有仓库、证书认证、用户登录认证

    一.Docker Registry工作原理 02_Docker Registry角色 Docker Registry有三个角色,分别是index.registry和registry client. i ...

  8. Docker 容器仓库之搭建私有仓库、hub仓库

    一.什么是仓库 Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像. Docker运行中使用的默认仓库 ...

  9. Docker harbor私有仓库部署与管理

    Docker harbor私有仓库部署与管理. 前言 一.什么是Harbor 二.Harbor的特性 三.Harbor的构成 四.Harbor部署 4.1 环境准备 4.2 部署Docker Comp ...

最新文章

  1. 我学Delphi心得与笔记-------在控件上如何禁用Ctrl+V
  2. Maven最全教程,看了必懂
  3. 【CyberSecurityLearning 42】日志记录规则
  4. Android——用Activity和Service实现简单的音乐播放器
  5. android settext 参数,Android TextView.setTextColor()的参数设置方式
  6. 机器人softmove_ABB 工业机器人 SoftMove功能介绍
  7. Unity打开的文件是杂项文件的处理方法
  8. ckEditor与ckFinder的集成
  9. 我常去的编程技术网站
  10. NE555延时电路设计
  11. ApacheCN 活动汇总 2019.8.23
  12. c编程语言外文翻译及原文,外文翻译--基于ST语言(结构化文本语言)可编程控制器(中文)...
  13. kubectl 命令详解(三十四):rollout status
  14. 阿里云短信服务Java实现
  15. 面试题:检测杯子的质量
  16. type-c英文怎么读音发音,type-c怎么读英语发音
  17. FPGA 结构分析 -IO 资源
  18. Python实现聚类K-means算法
  19. 春天,是时候______
  20. GX Works2、MX OPC 6

热门文章

  1. 机器学习基石-作业二-第10题分析
  2. Python安装Matplotlib,wordcloud,jieba第三方库
  3. 蓝桥杯第三届省赛JAVA真题----取球博弈
  4. 关于js的一些常用小知识点(持续更新)
  5. Ambari删除服务报错之CSRF protection is turned on
  6. shell题库选择题_shell学习:几道常见shell习题
  7. 照片边框 app android,Screener App-一手搞定将手机截图加上外框
  8. linux查看xml文件的配置,3、kvm虚拟机日常管理与配置
  9. was6 linux 卸载,重新安装was61
  10. C语言和Java 在用数组作为参数时有点不一样