千家信息网

Docker怎么部署私有仓库

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,这篇文章主要介绍"Docker怎么部署私有仓库",在日常操作中,相信很多人在Docker怎么部署私有仓库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Docker怎么部
千家信息网最后更新 2025年02月12日Docker怎么部署私有仓库

这篇文章主要介绍"Docker怎么部署私有仓库",在日常操作中,相信很多人在Docker怎么部署私有仓库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Docker怎么部署私有仓库"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

仓库(Repository)是集中存放镜像的地方。
一个容易混淆的概念是注册服务器(registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址docker.sina.com.cn/centos:centos7来说,docekr.sian.com.cn是注册服务器地址,centos是仓库名,centos7是仓库的tag(标签)。

Docker Hub 官方仓库
目前docker官方维护了一个公共仓库,Docker Hub,其中已经包括了超过1500的镜像。大部分需求,都可以通过在Docker Hub中直接下载镜像来实现。

部署私有仓库:

1, 通过官方的registry镜像来部署私有仓库:

项目环境:
两台主机(centos7):docker01:172.16.1.30
docker02:172.16.1.40**

docker01:
(1)基于registry镜像运行一个容器:
[root@sqm-docker01 ~]# docker run -d --name registry --restart=always -p 5000:5000 -v /data/registry:/var/lib/registry registry:latest

参数说明:#registry服务默认监听的是5000端口-v = --volume 数据卷,进行一个挂载:宿主机:容器内

(2)命名私有仓库镜像:
##如果不对私有仓库命名的话,默认走的是公共仓库(docker hub),所以需要命名镜像。
私有仓库镜像的命名规则:宿主机ip地址:端口号/xxxx(需要更改的名称)
以nignx镜像为例,下载nginx镜像:
[root@sqm-docker01 ~]# docker pull nginx

[root@sqm-docker01 ~]# docker tag  nginx:latest 172.16.1.30:5000/nginx:latest

注意:当你对源镜像(nginx:latest)进行命名后,命名后的镜像名称也视为一个标签,因为id号是相同的。
如果当源镜像(nginx:latest)删除,命名后的镜像依然会存在,因为删除的是一个标签。

(3)修改docker主配置文件:
[root@sqm-docker01 ~]# vim /usr/lib/systemd/system/docker.service

指定本地仓库的ip地址+端口号:

重新加载进程并重启docker服务:

[root@sqm-docker01 ~]# systemctl daemon-reload[root@sqm-docker01 ~]# systemctl restart docker

(4)将本地镜像push到私有仓库中:
[root@sqm-docker01 ~]# docker push 172.16.1.30:5000/nginx:latest

//查看私有仓库中的镜像:

[root@sqm-docker01 ~]# curl 172.16.1.30:5000/v2/_catalog{"repositories":["nginx"]}

//查看仓库中镜像的标签:

[root@sqm-docker01 ~]#  curl 172.16.1.30:5000/v2/nginx/tags/list{"name":"nginx","tags":["latest"]}

//如果需要删除私有仓库中的镜像,因为我有尝试用官方的第三方工具(deletedockerregistryimage)来进行删除镜像,但最终并没有把仓库中的镜像删除。所以我采取在运行registry时挂载在本地的目录[/data/registry]中,找到指定的镜像存放的目录来进行删除。

[root@sqm-docker01 ~]# cd /data/registry/docker/registry/v2/[root@sqm-docker01 v2]# lsblobs  repositories[root@sqm-docker01 v2]# cd repositories/[root@sqm-docker01 repositories]# lsnginx[root@sqm-docker01 repositories]# rm -rf nginx/
删除后再次查看私有仓库中的镜像是否还存在:[root@sqm-docker01 ~]# curl http://172.16.1.30:5000/v2/_catalog{"repositories":[]}

可以看到仓库中的镜像已被成功删除。

docker02:
连接docker01,从docker01的仓库中拉取镜像:(记得先把镜像上传到私有仓库中)
(1)修改docker的配置文件:
[root@sqm-docker02 ~]# vim /usr/lib/systemd/system/docker.service

重启docker服务:

[root@sqm-docker02 ~]# systemctl daemon-reload[root@sqm-docker02 ~]# systemctl restart docker

(2)从私有仓库中拉取镜像:

[root@sqm-docker02 ~]# docker pull 172.16.1.30:5000/nginx #使用pull命令进行拉取

(3)部署nginx服务:

[root@sqm-docker02 ~]# mkdir html[root@sqm-docker02 ~]# echo "welcome to nginx web" > html/index.html

[root@sqm-docker02 ~]# docker run -itd --name nginx -p 80:80 -v /root/html:/usr/share/nginx/html 172.16.1.30:5000/nginx

访问nginx页面:

2,部署Harbor(哈勃)私有仓库:

registry是官方的一个私有仓库,而harbor是第三方的一个私有仓库。

(1)下载compose:
安装依赖:
[root@sqm-docker01 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
从github官网上进行下载:
URL:https://github.com/docker/compose/releases

[root@sqm-docker01 ~]# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-uname -s-uname -m-o /usr/local/bin/docker-compose

[root@sqm-docker01 ~]# chmod +x /usr/local/bin/docker-compose

查看compose版本:

[root@sqm-docker01 ~]# docker-compose -versiondocker-compose version 1.24.0, build 0aa59064

(2)下载harbor安装包并进行解压:

[root@sqm-docker01 ~]# tar zxf harbor-offline-installer-v1.7.4.tgz -C /usr/local/[root@sqm-docker01 ~]# cd /usr/local/harbor/

编写harbor配置文件:
[root@sqm-docker01 harbor]# vim harbor.cfg

执行脚本:
[root@sqm-docker01 harbor]# ./install.sh

进入网站:用户admin,密码:Harbor12345(在harbor配置文件中可以查看到)
URL:http://172.16.1.30
[root@sqm-docker01 harbor]# vim harbor.cfg


登陆界面如下:

(3)我们在网页上新建一个项目:


##修改docker配置文件:
[root@sqm-docker01 ~]# vim /usr/lib/systemd/system/docker.service

//重新加载docker:

[root@sqm-docker01 ~]# systemctl daemon-reload[root@sqm-docker01 ~]# systemctl restart docker

//重启compose:
注意:因为刚刚已经重启了docker服务,所以我们需要将所有容器给重新启动。

[root@sqm-docker01 harbor]# docker ps -a -q | xargs docker start

[root@sqm-docker01 harbor]# docker-compose stop


[root@sqm-docker01 harbor]# docker-compose start

(4)在本地终端上连接harbor:
[root@sqm-docker01 harbor]# docker login -u admin -p Harbor12345 172.16.1.30:80

(5)将需要上传到harbor私有仓库的镜像进行push:
#例如将本地的一个nginx镜像命令并且push到仓库:
[root@sqm-docker01 harbor]# docker tag nginx:latest 172.16.1.30:80/sunqiuming/nginx:latest

[root@sqm-docker01 harbor]# docker push 172.16.1.30:80/sunqiuming/nginx:latest #push到刚才在网页上创建的项目

push成功后,我们在网页上进行查看:

docker02进行连接harbor:
(1)为了在docker02不再进入配置文件进行修改,将docker01上的docker配置文件拷贝给docker02:
#免密登陆:
[root@sqm-docker01 ~]# ssh-keygen

[root@sqm-docker01 ~]# ssh-copy-id 172.16.1.40

[root@sqm-docker01 ~]# scp /usr/lib/systemd/system/docker.service root@172.16.1.40:/usr/lib/systemd/system/docker.service

重启docker服务:
[root@sqm-docker02 ~]# systemctl daemon-reload
[root@sqm-docker02 ~]# systemctl restart docker

(2)连接harbor私有仓库:

(3)从harbor私有仓库中拉取镜像:
[root@sqm-docker02 ~]# docker pull 172.16.1.30:80/sunqiuming/nginx #指向的是刚才上传镜像的仓库中进行拉取。

(4)最后在基于该镜像,运行nginx服务并测试网页:
[root@sqm-docker02 ~]# docker run -d --name nginx -p 80:80 172.16.1.30:80/sunqiuming/nginx:latest

到此,关于"Docker怎么部署私有仓库"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

仓库 镜像 私有 服务 文件 配置 官方 服务器 地址 标签 网页 项目 学习 容器 目录 运行 成功 口号 名称 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器下载速度慢上传速度快 疫情网络安全个人应该注意 服务器资产信息有哪些 计算机网络技术远程教学难吗 联通家庭网络服务器 网络安全行政警告处罚公布吗 李昶 网络安全 湖南发货单软件开发 湖北荆门网络安全演练 网易uu阿根廷服务器 如何显示本列中最小的数据库 博洛尼亚天气预报软件开发 学校网络安全检查和评估细则 软件开发硕士毕业设计 服务器挂网站 云服务器管理控制台指南 软件开发面试常见问题及回答技巧 学校网络安全整治自查报告 软件开发怎么转测试 电脑安装服务器镜像蓝屏了 怎么弄软件开发 高中网络安全手抄报一等奖 科技信息与数据库技术 做网络技术的叫什么 ssh带端口登录远程服务器 软件开发的模型和特点 湖南省天驱服务器云主机 网络安全技术与应用期刊如何 奶块vivo的服务器叫什么 敏捷软件开发稳定性测试
0