Docker私有仓库Registry部署的实现
作者:俊伟祺i 发布时间:2021-03-06 18:15:41
标签:Docker,私有仓库,Registry
随着docker使用的镜像越来越多,就需要有一个保存镜像的地方,这就是仓库。目前常用的两种仓库:公共仓库和私有仓库。最方便的就是使用公共仓库上传和下载,下载公共仓库的镜像是不需要注册的,但是上传时,是需要注册的。
私有仓库最常用的就是Registry、Harbor两种,那接下来详细介绍如何搭建registry私有仓库,Harbor将在下一篇博文部署。
一、部署Registry私有仓库
案例描述
两台CentOS7.4,一台为Docker私有仓库;另一台为Docker客户端,测试使用;
两台服务器都需要安装Docker服务,请参考博文:安装Docker.v19版本
1、配置registry私有仓库
[root@centos01 ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
<!--docker宿主机开启路由功能-->
[root@centos01 ~]# sysctl -p <!--刷新配置-->
net.ipv4.ip_forward = 1
[root@centos01 ~]# vim /etc/docker/daemon.json <!--配置镜像加速-->
{"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]} <!--添加阿里云加速-->
[root@centos01 ~]# systemctl reload docker <!--重新启动docker服务-->
[root@centos01 ~]# docker search registry <!--查找registry镜像-->
<!--registry镜像可以直接先pull下来,也可以不下载,根据自己情况而定-->
[root@centos01 ~]# docker run -d -p 5000:5000 --name registry --restart=always -v /opt/registry:/var/lib/registry registry
<!--运行registry容器,运行registry服务存储自己的镜像-->
<!--"--restart=always"参数是指此容器跟随docker服务启动而启动-->
[root@centos01 ~]# docker ps <!--查看docker运行的容器-->
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7773d77b8a3 registry "/entrypoint.sh /etc…" 50 seconds ago Up 46 seconds 0.0.0.0:5000->5000/tcp registry
[root@centos01 ~]# docker images <!--查看docker所有镜像-->
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest 708bc6af7e5e 3 months ago 25.8MB
tomcat latest 1b6b1fe7261e 5 days ago 647MB
hub.c.163.com/public/centos 6.7-tools b2ab0ed558bb 3 years ago 602MB
[root@centos01 ~]# vim /etc/docker/daemon.json <!--配置docker服务支持registry服务-->
{"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"],
"insecure-registries":["192.168.100.10:5000"] <!--添加此行-->
}
[root@centos01 ~]# systemctl reload docker <!--重新启动docker服务-->
2、上传镜像到registry私有仓库
[root@centos01 ~]# docker tag hub.c.163.com/public/centos:6.7-tools 192.168.100.10:5000/image/centos:6.7
<!--修改镜像标签-->
[root@centos01 ~]# docker push 192.168.100.10:5000/image/centos:6.7 <!--上传镜像到registry私有仓库-->
二、配置Docker客户端访问私有仓库
<!--客户端安装docker服务,配置镜像加速-->
[root@centos02 ~]# vim /etc/docker/daemon.json <!--配置docker支持registry服务 -->
{"registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"],
"insecure-registries":["192.168.100.10:5000"] <!--添加此行-->
}
[root@centos02 ~]# systemctl restart docker <!--重新启动docker服务-->
[root@centos02 ~]# docker pull 192.168.100.10:5000/image/centos:6.7
<!--客户端下载私有仓库中的镜像-->
[root@centos02 ~]# docker images <!--查看镜像是否下载成功-->
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.100.10:5000/image/centos 6.7 b2ab0ed558bb 3 years ago 602MB
至此registry私有仓库已经搭建完成,但是现在存在一个问题,如果这也部署的话企业内部所有人员皆可访问我们的私有仓库,为了安全起见,接下来为registry添加一个身份验证,只有通过了身份验证才可以上传或者下载私有仓库中的镜像。
三、配置registry加载身份验证
[root@centos01 ~]# yum -y install httpd-tools <!--安装加密工具httpd-tools-->
[root@centos01 ~]# mkdir /opt/registry-auth <!--创建存放验证密钥目录-->
[root@centos01 ~]# htpasswd -Bbn bob pwd@123 > /opt/registry-auth/htpasswd
<!--配置registry身份验证数据库-->
<!--"-Bbn”参数解释:B强制密码加密;b在命令中输入密码,不提示输入密码;n不更新密钥文件-->
<!--删除此服务器上的所有容器,接下来重新生成一个需要身份验证的私有仓库容器-->
[root@centos01 ~]# docker run -d -p 5000:5000 --restart=always \
-v /opt/registry-auth/:/auth/ \
-v /opt/registry:/var/lib/registry --name registry-auth -e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry
<!--重新运行一个支持身份验证的registry私有镜像仓库容器-->
[root@centos01 ~]# docker tag tomcat:latest 192.168.100.10:5000/image/tomcat:1.0
<!--镜像修改标签-->
[root@centos01 ~]# docker push 192.168.100.10:5000/image/tomcat:1.0
<!--测试不通过身份验证是否可以往私有仓库上传镜像-->
no basic auth credentials
<!--提示没有身份验证,上传不了-->
[root@centos01 ~]# docker login 192.168.100.10:5000
<!--登录私有镜像仓库,通过身份验证即可上传-->
Username: bob <!--输入bob-->
Password: <!--输入密码-->
……………… <!--此处省略部分内容-->
Login Succeeded <!--已通过身份验证,此时可以上传镜像到私有仓库-->
[root@centos01 ~]# docker push 192.168.100.10:5000/image/tomcat:1.0 <!--再次上传镜像到私有仓库-->
The push refers to repository [192.168.100.10:5000/image/tomcat]
b0ac242ce8d3: Pushed
5e71d8e4cd3d: Pushed
eb4497d7dab7: Pushed
bfbfe00b44fc: Pushed
d39111fb2602: Pushed
155d997ed77c: Pushed
88cfc2fcd059: Pushed
760e8d95cf58: Pushed
7cc1c2d7e744: Pushed
8c02234b8605: Pushed
1.0: digest: sha256:55b41e0290d32d6888aee2e9a15f03cc88d2f49d5ad68892c54b9527d0ed181c size: 2421
[root@centos02 ~]# docker pull 192.168.100.10:5000/image/tomcat:1.0
<!--docker客户端不通过身份验证直接下载私有仓库中的镜像直接被拒绝-->
Error response from daemon: Get http://192.168.100.10:5000/v2/image/tomcat/manifests/1.0: no basic auth credentials
[root@centos02 ~]# docker login 192.168.100.10:5000
<!--登录私有仓库,通过身份验证-->
Username: bob <!--输入bob-->
Password: <!--输入密码-->
Login Succeeded <!--通过身份验证-->
[root@centos02 ~]# docker pull 192.168.100.10:5000/image/tomcat:1.0 <!--下载私有仓库中的镜像-->
1.0: Pulling from image/tomcat
376057ac6fa1: Pull complete
5a63a0a859d8: Pull complete
496548a8c952: Pull complete
2adae3950d4d: Pull complete
0a297eafb9ac: Pull complete
09a4142c5c9d: Pull complete
9e78d9befa39: Pull complete
18f492f90b9c: Pull complete
7834493ec6cd: Pull complete
216b2be21722: Pull complete
Digest: sha256:55b41e0290d32d6888aee2e9a15f03cc88d2f49d5ad68892c54b9527d0ed181c
Status: Downloaded newer image for 192.168.100.10:5000/image/tomcat:1.0
192.168.100.10:5000/image/tomcat:1.0
[root@centos02 ~]# docker images <!--查看docker客户端镜像-->
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.100.10:5000/image/tomcat 1.0 1b6b1fe7261e 5 days ago 647MB
192.168.100.10:5000/image/centos 6.7 b2ab0ed558bb 3 years ago 602MB
来源:https://blog.51cto.com/14156658/2498785


猜你喜欢
- 这篇访谈有点早了,是今年3月份时的事。Matt Cutts针对Google的爬行,索引机制以及对301重定向,重复内容处理的问题做出了些回答
- 很多朋友在用IIS6架网站的时候遇到不少问题,而这些问题有些在过去的IIS5里面就遇到过,有些是新出来的,做了很多次试验,结合以前的排错经验
- 难得有如此凑巧的日子,真是百年一遇千年一遇的什么事都让我们这一代给撞上了。七夕越来越被渲染成中国的情人节,2.14情人节送花,七夕情人节也送
- IBM高级副总裁及成本削减专家罗伯特·莫法特(Robert Moffat)因涉嫌内幕交易,在10月30号离开IBM公司
- seo优化中最不起眼的东西,最难学到的东西,就是网页的链接规则了,seo网上流行一句话:内容为王,外链为皇。其实seo在你达到一定境界,接手
- Godaddy主机用户可以为其Linux共享托管帐户里的每个目录设置多个不同的目录许可。这样就可以控制哪些人能访问你的文档,他们在这些目录里
- 今天我赶着去参加一个聚会,最糟糕的是还有二十分钟会议便要开始了。我好不容易截到了一辆出租车,匆匆忙忙上车后,我对司机说:“麻烦你,我很赶时间
- 这个世界无奇不有,就连做网页都要拼个高低长短,当你上网百般无聊之际,不妨看一看网络中的世界之最吧!1.最宽网页你可曾想过,网站就是一道空白的
- 国外媒体今天载文阐述了Twitter由几页纸的创意发展成一家身价10亿美元公司的发展历程,其中包括其数次融资以及Facebook的5亿美元收
- FTP(File Transfer Protocol)是Internet上用来传送文件的协议(文件传输协议)。FTP服务器端的注意事项:一、
- find 命令主要用于查找目录和文件,可以指定多种参数进行匹配。用法:find +查找路径 +命令参数
- 目前,国内外的SEO都在研究Google排名的因素,据说有三百多种。不过能够把握的无非都是最基本的那几种。只要你能够针对你的网站把以下几方面
- 随着Iphone在国内大行其道,越来越多的开发者涌入iOS开发大军 中,但都苦于没有苹果机,本文即将介绍WIN虚拟MAC的教程。一、工具:
- shell中如何判断一个变量是否为空shell编程中,对参数的错误检查项中,包含了变量是否赋值(即一个变量是否为空),判断变量为空方法如下:
- Linux中的硬链接和软链接软链接和硬链接命令lnln是创建链接的命令:创建硬链接:ln file link创建软链接:ln -s file
- 10月16日消息,据消息人士透露,网页游戏运营商51wan近日调开通新域名kaixin(http://kaixin.51wan.com/),
- Google AdSense开始通过本地的公司与发布者联系和合作,实际上仅仅是法律意义上的Google AdSense代表变更,并不影响其他
- 10月的北京城冷热交加,可谓是 * 两重天,近日由51WAN。com主办,由众惠网、17173。com协办的“&r
- 今个做开发用xampp的时候发现apache不能启动了,查一下log,发现端口冲突了[Apache] Problem detec
- 在你购买一个托管计划后,你需要登陆到你的Account Manager来完成帐户设置。第一. 登陆你的Account Manager.第二.