Docker搭建私有仓库(registry与Harbor)
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,随着docker使用的镜像越来越多,就需要有一个保存镜像的地方,这就是仓库。目前常用的两种仓库:公共仓库和私有仓库。最方便的就是使用公共仓库上传和下载,下载公共仓库的镜像是不需要注册的,但是上传时,是
千家信息网最后更新 2026年11月02日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----------本文到此结束,感谢阅读----------
仓库
镜像
服务
私有
服务器
文件
端口
配置
地址
容器
目录
名称
宿主
宿主机
工具
就是
案例
版本
测试
登录
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
互联网科技公司经营范围
互联网属科技
互联网是不是新科技
鸠鸠互联网科技
新华互联网科技学院
科技类互联网
互联网 的科技创新
壕鑫互联网络科技
互联网科技大会
互联网科技公司名称
人人互联网科技是培训
哈尔滨新华互联网科技
温州喔噻互联网科技有限公司
晓花互联网科技有限公司网址
河南住房之家互联网科技
科技互联网的核心竞争力
互联网科技资金流入
万物互联网智能科技
西安左小互联网科技有限公司
咖啡豆
耶加雪菲
互联网 科技服务平台
太原新华互联网科技学校怎么样
互联网金融科技展
35岁以上互联网科技行业
济南小医互联网科技有限公司招聘
昆明中奇联合互联网科技
绵阳真晨互联网科技有限公司
北京品多多互联网科技有限公司