Docker私有仓库Registry部署的实现
作者:俊伟祺i 时间:2021-03-06 18:15:41
随着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
标签:Docker,私有仓库,Registry
0
投稿
猜你喜欢
让SEO更大的作用
2009-01-16 16:39:00
阿里妈妈新政策 出自好意 却未必能被接受
2008-07-19 07:12:00
在AWS的Linux服务器部署Flask预演(详细步骤)
2022-03-23 18:30:44
关键词优化的研究要观念先行
2008-12-23 14:52:00
linux用户组以及权限总结
2023-07-13 14:16:43
dedecms 5.6 完美实现伪静态的方法附打包文件下载
2010-12-08 16:29:00
Godaddy主机续费教程- Gift card 付款
2010-04-20 13:18:00
Ubuntu无法联网的解决方法
2021-07-07 05:57:24
Apache的status相关问题解决办法
2022-07-30 12:16:10
Windows Server 2008盛大开幕[下载]
2008-02-28 12:36:00
Windows 2003 Server安全配置图文教程
2010-03-24 18:56:00
网站改版的心得体会分享
2008-04-05 13:47:00
基于Docker的MongoDB实现授权访问的方法
2023-07-17 16:27:30
微软上下文广告展开内测 将单挑Google AdSense
2008-07-19 12:05:00
堵塞Web漏洞(下)
2007-10-24 13:47:00
VS2022远程调试工具的使用方法
2021-05-02 01:05:08
在VMware虚拟机里安装Linux操作系统
2020-12-25 14:44:09
WIN 2003中的服务器群集功能
2007-08-28 14:52:00
Apache中配置支持CORS(跨域资源共享)实例
2023-08-22 06:11:03
从wordpress搬家经历得出的几点经验分享
2011-04-11 18:20:00