docker搭建私有仓库

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

#先吧私有仓库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容器编排和自动构建部署。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏24K纯开源

Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe

序言     使用Ubuntu和vim已经有一段时间了,对于Vim下的插件应用,我总是抱着一股狂热的态度。这次,又在网上闲逛着,发现了一个个人博客提到了Vim代...

299100
来自专栏肖蕾的博客

关于Android开发中遇到的内存不够的情况

10520
来自专栏张坤的专栏

Unity编译Android的原理解析和apk打包分析

最近由于想在Scene的脚本组件中,调用Android的Activity的相关接口,就需要弄明白Scene和Activity的实际对应关系,并对Unity调用A...

3K00
来自专栏进击的君君的前端之路

webpack

15020
来自专栏Android开发指南

8.广播

377100
来自专栏向治洪

android 热修补之andfix实践

首先有这方面需要的请到https://github.com/xiangzhihong/andfixDemo/tree/master下载例子 对于网上提供的热补丁...

18550
来自专栏数据和云

Oracle 12.2 新特性 | PDB不同字符集变更深入解析

从12c版本12.1开始,就有了新特性——Pluggable Database,相比较之前通过schema的管理方式实现多用户管理,Pluggable Data...

37990
来自专栏tiane12

Android开发错误 The method onClick(View) of type new View.OnClickListener(){} must override a superclas解

24660
来自专栏数据之美

linux 系统监控、诊断工具之 lsof 用法简介

1、lsof 简介 lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具。 它的意思是 List Open Files,很容易你就记住了它是 “...

43860
来自专栏数据和云

Oracle 12c多租户特性详解:全局用户与本地用户的原理与维护

? 前情回顾:Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离 COMMON 和 Local 用户 无论在 CDB 和 Non-CDB...

33350

扫码关注云+社区

领取腾讯云代金券