目录
1.前言
- 本文档所面对的学习对象如下:
- Linux系统管理员;
- 数据中心运维人员。
- 本文档全部原创,实际操作完成次数超过十次以上,读者可放心按照顺序进行操作。
- 本文档的实际操作系统平台为Oracle Linux7.9系统,同样适用于Redhat、CentOS的对应版本Linux系统(需对部分系统配置进行简单更改即可)。
- 请尊重原创。
2.系统准备
- 虚拟化软件,VMware workstations Pro 16.1,可自行下载;
- 操作系统1:Oracle Linux 7.9,IP地址192.168.31.61,已经部署docker,用于测试;
- 操作系统2:Oracle Linux 7.9,IP地址192.168.31.51,已经部署docker,用于搭建Registry本地仓库;
- 连接工具:MobaXterm_Personal_20.5,可自行下载。
注:详细docker部署文档请参考笔者发布的其他文档。
3.关于Registry
Docker的Docker hub是一个用于管理公共镜像的官方仓库,我们可以在上面找到我们想要的大部分镜像,也可以把我们自己的镜像推送上去。但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像。这个可以通过开源软件Registry来达成目的。
Registry在Docker hub上提供了registry的镜像,我们可以直接使用该registry镜像来构建一个容器,搭建我们自己的私有仓库服务。
4.Registry部署
4.1查看docker状态
[root@oel79 ~]# systemctl status docker
4.2下载Registry镜像
[root@oel79 ~]# docker pull registry
4.3启动Registry容器
[root@oel79 ~]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
094887e3ba2db82d13246a6584a60404565f45d2dd55e9378a8d61dd7bf2152d
[root@oel79 ~]#
注:Registry服务默认会将上传的镜像保存在容器的/var/lib/registry目录,并且将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录。
4.4查看镜像和容器
[root@oel79 ~]# docker images
[root@oel79 ~]# docker ps
4.5检查Registry运行状态
当Registry容器正常启动之后,我们可以打开浏览器,访问http://192.168.31.51:5000/v2,如果看到如下页面内容,说明Registry容器运行正常。
5.镜像上传
5.1下载测试镜像
从官方仓库下载一个我们要用来测试的镜像,下面我们将下载一个vsftpd镜像进行测试。
[root@oel79 ~]# docker pull rhrn/vsftpd
[root@oel79 ~]# docker images
5.2镜像命名
为了区别于其他镜像,我们将用来测试的镜像进行命名,也可以说是加tag。
[root@oel79 ~]# docker tag rhrn/vsftpd:latest 192.168.31.51:5000/rhrn/vsftpd:latest
[root@oel79 ~]# docker images
5.3上传镜像到本地仓库
把前面我们用来测试的镜像,上传到Registry仓库。
[root@oel79 ~]# docker push 192.168.31.51:5000/rhrn/vsftpd
如下图,上传镜像的操作很可能会遇到如下错误,这时因为Docker 引擎默认通过https 协议与Docker Registry 通信,所以如果搭建的Docker 私有镜像库是http 协议的话,就会输出错误提示。
这时需要修改客户端docker的配置文件/usr/lib/systemd/system/docker.service,在其中的ExecStart选项,后面加入--insecure-registry {docker 私有镜像库 IP} --ipv6=false,如下图。
然后运行以下两条命令,重新载入核心进程,并重启docker服务。
[root@oel79 ~]# systemctl daemon-reload
[root@oel79 ~]# systemctl restart docker
5.4查看已上传的镜像
- 进入系统/opt/registry目录,查看已经上传的镜像。
通过HTTP查看已上传的镜像。
6.测试Registry本地仓库的可用性
6.1本地测试
6.1.1删除本地镜像
[root@oel79 rhrn]# docker images
[root@oel79 rhrn]# docker rmi rhrn/vsftpd
[root@oel79 rhrn]# docker rmi 192.168.31.51:5000/rhrn/vsftpd
6.1.2镜像下载
[root@oel79 rhrn]# docker pull 192.168.31.51:5000/rhrn/vsftpd
[root@oel79 rhrn]# docker images
6.2客户端测试
6.2.1检查服务状态和镜像
[root@oel79 system]# systemctl status docker
[root@oel79 system]# docker images
6.2.2镜像下载
[root@oel79 system]# docker pull 192.168.31.51:5000/rhrn/vsftpd
[root@oel79 system]# docker images
如果在这一步依旧有“http: server gave HTTP responsnt”的错误提示,按照前面所说的解决办法进行配置文件的修改即可。
至此,我们的Registry私有仓库搭建完成。