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

[经验分享] Centos7:Docker私有仓库搭建和使用

[复制链接]

尚未签到

发表于 2019-2-21 11:29:41 | 显示全部楼层 |阅读模式
安装并启动docker
yum -y install docker
systemctl start docker
systemctl enable docker搭建私有仓库
下载registry镜像
docker pull registry防火墙添加运行5000端口
iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT下载完之后我们通过该镜像启动一个容器
docker run -d -p 5000:5000 --privileged=true -v /opt/registry:/tmp/registry registry参数说明:
-v /opt/registry:/tmp/registry :默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录挂载到容器
–privileged=true :CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误(OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error)错误

检查5000端口
netstat -an | grep 5000


客户端上传镜像
修改/etc/sysconfig/docker(Ubuntu下配置文件地址为:/etc/init/docker.conf),增加启动选项(已有参数的在后面追加),之后重启docker,不添加报错,https证书问题。
OPTIONS='--insecure-registry 10.0.0.10:5000'     
#CentOS 7系统,注意如果是kube-registry:5000则需要在/etc/hosts配置  10.0.0.10  kube-registry
# 后续拉取  10.0.0.10:5000需要docker pull 10.0.0.10:5000/centos1   
#          kube-registry:5000需要 docker pull docker-registry:5000/centos1
other_args='--insecure-registry 10.0.0.10:5000'   #CentOS 6系统因为Docker从1.3.X之后,与docker registry交互默认使用的是https,而此处搭建的私有仓库只提供http服务
在docker公共仓库下载一个镜像

docker pull docker.io/centos来修改一下该镜像的tag
docker tag centos 10.0.0.10:5000/centos把打了tag的镜像上传到私有仓库
docker push 10.0.0.10:5000/centos客户端添加私有仓库地址
# 添加这一行,修改/etc/sysconfig/docker文件,并重新启动docker服务。
ADD_REGISTRY='--add-registry 10.0.0.10:5000'加上后,search镜像,私有仓库和docker hub上都会显示;
不加搜索私有仓库,需要命令中指定私有仓库ip

使用仓库中的镜像
  
[root@etcd ~]# curl http://10.0.0.10:5000/v2/_catalog
{"repositories":["centos1"]}
  


  

查询私有仓库中的所有镜像,使用docker search命令:
curl -u myuser https://registry_ip:5000/v1/searchcurl registry_ip:5000/v1/searchdocker search registry_ip:5000/     #centos 7docker search registry_ip:5000/library #centos查询仓库中指定账户下的镜像,则使用如下命令:
docker search registry_ip:5000/account/  --------------------------------------------------------------------------------------------------------------------------------
  推广部署WebUI
  
  完成了上面的步骤,就可以使用 docker 命令行工具对我们搭建的 registry 做各种操作了,如 push / pull。然而还是不够方便,比如不能直观的查看 registry 中的资源情况,如果有一个 ui 工具,能够看到仓库中有哪些镜像、每个镜像的版本是多少,就好了,下面就介绍 ui 的搭建过程。
  目前找到了两个 web ui,一个是 docker-registry-frontend,另一个是 hyper/docker-registry-web。
  这两个 ui 功能差不多,只需任选其一就可以了。截止到我安装的时候,docker-registry-frontend 的功能还不完善,没有删除镜像的功能,只能浏览。后一个同时具备 删除和浏览 的功能。这两个 ui 的搭建过程下面都会讲。
先讲下 docker-registry-frontend 的安装过程:
  


  
  1、先安装 docker-compose
  这是一个脚本,直接从 https://github.com/docker/compose/releases 下载一个合适的版本,然后拷贝到 /usr/local/bin 目录中,再改下执行权限就可以了。
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose  2、从 github 中下载 docker-registry-frontend 源码
  git clone https://github.com/kwk/docker-registry-frontend.git
  3、修改配置,默认情况下 docker registry 监听你主机的 5000 端口,ui 监听你主机的 8443 端口。而我的主机这两个端口从外部都不能访问,所以要分别修改这两个端口到 10050 和 10080。除了端口,还需要根据你的需要修改仓库中的镜像文件保存的位置,我的镜像要保存到 /var/lib/registry。
  vim docker-compose.yml

  •   # Setup front-end  
  •   frontend:  
  •     image: konradkleine/docker-registry-frontend:v2  
  •     #build: ../  
  •     links:  
  •       - registry:registry  
  •     ports:  
  •       # Publish the frontend's port 443 on the IP 0.0.0.0 on port 8443  
  •      *** - "0.0.0.0:10080:443"***  
  •     volumes:  
  •       - ./frontend/certs/frontend.crt:/etc/apache2/server.crt:ro  
  •       - ./frontend/certs/frontend.key:/etc/apache2/server.key:ro  
  •     environment:  
  •       # The front-end is SSL protected  
  •       - ENV_USE_SSL=yes  
  •       - ENV_DOCKER_REGISTRY_HOST=registry  
  •       - ENV_DOCKER_REGISTRY_PORT=5000  
  •       # The registry is SSL protected as well  
  •       - ENV_DOCKER_REGISTRY_USE_SSL=1  
  •     
  •   # Setup registry  
  •   registry:  
  •     image: registry:2  
  •     volumes:  
  •       # Mount the config directory  
  •       - ./registry/config:/etc/docker/registry:ro  
  •       # Make the registry storage persistent (see ./config/config.yml for the path)  
  •       ***- ./registry/storage:/var/lib/registry:rw***  
  •       # Mount our own certificate and key  
  •       - ./registry/certs:/certs:ro  
  •     ports:  
  •       # Publish registry's port 5000 on the IP 0.0.0.0 on port 5000  
  •       ***- "0.0.0.0:10050:5000"***  
  启动
  docker-compose up -d
  ps:上面这个指令其实是根据 docker-compose.yml 中的配置启动两个容器(fronted 和 registry,这两个容器是独立的,通过 REST API 交互信息),如果在安装 web ui 前,你的 private docker registry 已经在运行了,也可以去掉上面文件中的 registry 字段,但注意要指定对应的ip和端口信息。
  然后就能够访问 https://localhost:10080
再讲讲怎么安装 hyper/docker-registry-web
  目标是: registry 监听主机的 10050 端口,ui 监听主机的 10080 端口。
  1、创建工作目录
  
  mkdir -p hyper-docker-registry-web-config/frontend hyper-docker-registry-web-config/registry

  •   cd hyper-docker-registry-web-config  
  2、建一个用于 registry 的配置文件
  vim registry/config.yml

  •   version: 0.1  
  •   log:  
  •     level: info  
  •     formatter: text  
  •     fields:  
  •       service: registry-srv  
  •       environment: production  
  •   storage:  
  •     cache:  
  •       layerinfo: inmemory  
  •     filesystem:  
  •       rootdirectory: /var/lib/registry  
  •     delete:  
  •       # 要在 ui 上能够删除镜像,enable 的值必须是 true  
  •       enabled: true  
  •   http:  
  •     addr: :5000  
  •     debug:  
  •       addr: :5001  
  3、新建一个用于 ui 的配置文件
  vim frontend/config.yml

  •   registry:  
  •     # Docker registry url  
  •     url: http://registry-srv:5000/v2  
  •     # Docker registry fqdn  
  •     name: localhost:10050  
  •     # To allow image delete, should be false  
  •     readonly: false  
  •     auth:  
  •       # Disable authentication  
  •       enabled: false  
  4、新建一个启动脚本
  vim startup.sh

  •   #! /bin/bash  
  •     
  •   # registry 监听主机的 10050 端口,并将镜像文件存储在主机的 /var/lib/registry/storage 中。  
  •   docker run -d -p 10050:5000 --restart=always --name registry-srv -v $(pwd)/registry/:/etc/docker/registry:ro -v /var/lib/registry/storage:/var/lib/registry registry:2  
  •     
  •   # ui 监听主机的 10080 端口  
  •   docker run -d -p 10080:8080  --name registry-web --link registry-srv -v $(pwd)/frontend/:/conf/:ro hyper/docker-registry-web  
  5、启动

  chmod +x startup.sh

  •   $ ./startup.sh  
  除了使用 shell 脚本启动,这里其实也可以写一个 docker-compose.yml 配置文件,然后使用 docker-compose 工具启动这两个容器。
  等启动完成,就可以通过 http://localhost:10080 访问 ui,且可以在 ui 上浏览/删除镜像了。
  OK,到这里,仓库和 ui
使用方法:
  假设上述的部署在 172.20.30.35 这台机器上进行的。
  需要修改【你的机器】上的2个文件:
  1、在 /etc/hosts 中加入:172.20.30.35 docker.midea.registry.hub
  2、修改 /etc/sysconfig/docker,添加或修改下面3个字段的值:
  ADD_REGISTRY='--add-registry docker.midea.registry.hub:10050'  

  •   DOCKER_OPTS="--insecure-registry docker.midea.registry.hub:10050"  
  •   INSECURE_REGISTRY='--insecure-registry docker.midea.registry.hub:10050'  
  3、然后重启你的 docker daemon:
  service docker restart 或 $ systemctl restart docker.service
  4、push 镜像
  docker tag your-image docker.midea.registry.hub:10050/your-image

  •   docker push docker.midea.registry.hub:10050/your-image  
  5、pull 镜像
  docker pull docker.midea.registry.hub:10050/your-image
  然后就可以使用这个私有registry了。
  


  

  
  


  

  

  

  

  





运维网声明 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-675288-1-1.html 上篇帖子: Docker学习与实践 Ⅱ 下篇帖子: 写给新手的十一条 Docker 守则
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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