千家信息网

Docker搭建私有仓库registry与Harbor的实现案例

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家分享的是有关Docker搭建私有仓库registry与Harbor的实现案例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。随着docker使用的镜像越来越多,
千家信息网最后更新 2025年01月23日Docker搭建私有仓库registry与Harbor的实现案例

这篇文章给大家分享的是有关Docker搭建私有仓库registry与Harbor的实现案例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

随着docker使用的镜像越来越多,就需要有一个保存镜像的地方,这就是仓库。目前常用的两种仓库:公共仓库和私有仓库。最方便的就是使用公共仓库上传和下载,下载公共仓库的镜像是不需要注册的,但是上传时,是需要注册的。

私有仓库最常用的就是registry、Harbor两种,那接下来详细介绍如何创建私有仓库。

一、搭建registry私有仓库

1)案例描述

两台docker服务器,dockerA创建registry私有仓库,dockerB用于测试!

2)案例实例

(1)DockerA服务器的操作

[root@dockerA ~]# docker pull registry:2       //下载registry:2的镜像[root@dockerA ~]# docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2//创建一个registry容器来运行registry服务;//-p:端口映射(前面是宿主机端口:后面是容器暴露的端口);//-v:挂载目录(前面是宿主机的目录:后面的是容器的目录)自动创建宿主机的目录;//--restart=always:随docker服务的启动而启动![root@dockerA ~]# docker ps          //确保容器是运行状态CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMESf98bf93f100e    registry:2     "/entrypoint.sh /etc…"  3 minutes ago    Up 3 minutes    0.0.0.0:5000->5000/tcp  registry[root@dockerA ~]# netstat -anpt | grep 5000     //确保5000端口正在被监听tcp6    0   0 :::5000         :::*          LISTEN   2370/docker-proxy  [root@dockerA ~]# docker tag centos:7 192.168.1.1:5000/centos:7//更改镜像名称,以便符合私有仓库名称规范注:私有仓库镜像的命名规则:192.168.20.7:5000/XXX(宿主机的IP:5000端口/镜像名称)[root@dockerA ~]# vim /usr/lib/systemd/system/docker.service //编写docker服务的主配置文件 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000//修改原本的配置文件添加不安全的仓库(--insecure-registry),地址是宿主机的IP地址与5000端口[root@dockerA ~]# systemctl daemon-reload [root@dockerA ~]# systemctl restart docker       //重新启动docker服务[root@dockerA ~]# docker push 192.168.1.1:5000/centos:7//将重命名后的镜像上传到registry私有仓库[root@dockerA ~]# curl 192.168.1.1:5000/v2/_catalog       //查看私有仓库中的镜像{"repositories":["centos"]}[root@dockerA ~]# curl 192.168.1.1:5000/v2/centos/tags/list     //查看镜像的详细信息{"name":"centos","tags":["7"]}

(2)DockerB服务器的操作

[root@dockerB ~]# vim /usr/lib/systemd/system/docker.service //修改docker的主配置文件 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1:5000//添加内容与registry一致,指定registry私有仓库服务器的IP地址及端口[root@dockerB ~]# systemctl daemon-reload [root@dockerB ~]# systemctl restart docker      //重新启动docker服务[root@dockerB ~]# curl 192.168.1.1:5000/v2/_catalog     //查看私有仓库中的镜像{"repositories":["centos"]}[root@dockerB ~]# curl 192.168.1.1:5000/v2/centos/tags/list   //查看私有仓库中的镜像{"name":"centos","tags":["7"]}[root@dockerB ~]# docker pull 192.168.1.1:5000/centos:7//下载私有仓库中的镜像[root@dockerB ~]# docker images      //确认镜像已经下载到本地REPOSITORY        TAG         IMAGE ID      CREATED       SIZE192.168.1.1:5000/centos  7          5e35e350aded    5 weeks ago     203MB

至此,registry私有仓库已经搭建完成!

二、搭建Harbor私有仓库

Harbor私有仓库和Registry私有仓库相比,功能强大很多,并且支持web图形化管理,所以在企业中非常受到欢迎!

1)案例描述

两台docker服务器,dockerA创建Harbor私有仓库,dockerB用于测试!

2)案例实例

(1)下载docker-compose工具

首先上github官网,如图:





DockerA服务器的操作

[root@dockerA ~]# yum -y install yum-utils device-mapper-persistent-data lvm2//下载docker-compose工具所需的依赖(部署docker环境时,就可以安装了)[root@dockerA ~]# curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose//下载docker-compose工具[root@dockerA ~]# chmod +x /usr/local/bin/docker-compose[root@dockerA ~]# docker-compose -v      docker-compose version 1.25.0, build 0a186604//查看docker-compose工具版本信息,确保已经安装成功

(2)配置Harbor

同样也是上github官网搜索,找到相应的版本即可,这里就不多做截图了!网址是https://github.com/goharbor/harbor/releases
如图:

同样也是在dockerA服务器上进行操作

[root@dockerA ~]# wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.1.tgz//下载harbor软件包[root@dockerA ~]# tar zxf harbor-offline-installer-v1.9.1.tgz -C /usr/local[root@dockerA ~]# cd /usr/local/harbor/[root@dockerA harbor]# vim harbor.yml //编写其配置文件,其他版本默认是cfg结尾的,这个版本是yml结尾的,文件内容都一样的hostname: 192.168.1.1         //更改其为本机的IP地址harbor_admin_password: Harbor12345    //这一行原本就是存在,不需要自行填写,只需记得它的用户名和密码即可,有需要可以自行进行修改[root@dockerA harbor]# ./install.sh        //执行安装脚本[root@dockerA harbor]# vim /usr/lib/systemd/system/docker.service //编写docker主配置文件 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1//跟registry差不多,主要harbor配置文件中没有填写端口号,这里也可添加,否则可能会出现错误[root@dockerA harbor]# systemctl daemon-reload [root@dockerA harbor]# systemctl restart docker      //重新启动docker服务[root@dockerA harbor]# pwd/usr/local/harbor             //注意目录,必须在这个目录下[root@dockerA harbor]# docker-compose start//使用docker-compose工具启动所有容器(因为在重新启动docker时,所有的容器都已经关闭了)[root@dockerA harbor]# netstat -anpt | grep 80       //确认80端口在监听tcp    0   0 172.18.0.1:33780    172.18.0.5:10514    ESTABLISHED 70076/docker-proxy tcp6    0   0 :::80          :::*          LISTEN   72870/docker-proxy

客户端访问web页面:




(3)上传镜像

仓库搭建完成后,接着在dockerA(harbor)服务器上上传镜像!

[root@dockerA ~]# docker login -u admin -p Harbor12345 192.168.1.1//指定用户名、密码及harbor服务器地址登录WARNING! Using --password via the CLI is insecure. Use --password-stdin.WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded    //登录成功[root@dockerA ~]# docker tag centos:7 192.168.1.1/test/centos:7//需要更改镜像名称,test是刚才创建的仓库名称[root@dockerA ~]# docker push 192.168.1.1/test/centos:7//向harbor服务器的test仓库上传镜像

上传完成后,如图:

(4)在dockerB服务器上测试下载镜像

[root@dockerB ~]# vim /usr/lib/systemd/system/docker.service //编写docker的主配置文件 13 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.1//指定harbor服务器的IP地址[root@dockerB ~]# systemctl daemon-reload [root@dockerB ~]# systemctl restart docker    //重新启动docker服务[root@dockerB ~]# docker login -u admin -p Harbor12345 192.168.1.1//登录到harbor服务器WARNING! Using --password via the CLI is insecure. Use --password-stdin.WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded          //登录成功[root@dockerB ~]# docker pull 192.168.1.1/test/centos:7//下载镜像进行测试[root@dockerB ~]# docker images      //确保镜像已经下载完成REPOSITORY        TAG         IMAGE ID      CREATED       SIZE192.168.1.1/test/centos  7          5e35e350aded    5 weeks ago     203MB

感谢各位的阅读!关于"Docker搭建私有仓库registry与Harbor的实现案例"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

仓库 私有 镜像 服务 服务器 文件 端口 配置 案例 地址 容器 目录 名称 宿主 宿主机 工具 内容 就是 版本 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 采购系统软件开发 db210.5数据库客户端安装 注册怎么把值存数据库 公安局信息网络安全保卫大队 可以将计算机的服务器网络 交警网络安全教育课 网络安全工程师考什么大学 计算机网络技术总结文档 php 二维数组的数据库 服务器和域名怎么绑定 集成电路软件开发减税 河北惠友集团服务器五百强吗 软件开发的两大技术是什么 数据库主流的中间件 服务器管理书籍推荐 西安云雀软件开发公司 l2tp服务器配置 aes加密对于数据库索引如何 ca服务器地址是什么意思 贵州学习软件开发服务商 女生结婚后适合做软件开发吗 azure云服务器免费 黑暗之魂2如何开机停止连接服务器 没有大专文凭学软件开发 数据库应用与技术课后答案 鉴权服务器发生错误是什么意思 看互联网小镇的科技警务再升级 中学生网络安全宣传周 国家数据库dna从何而来 计算机网络安全 期末考试题
0