玩会基于registry的私有仓库

目标:

1、理解概念。
2、学会搭建使用方法。


内容:

1、为什么用它?

公司服务器大部分都是私网,为了安全和方便可以搭建私有仓库,而不用完全手动的去导入导出镜像,因为是局域网拉取速度非常快,可以节省带宽和大量时间。 有时候使用 Docker Hub 这样的公共仓库可能不方便(隐私文件),用户可以创建一个本地仓库供私人使用。

2、是什么?

docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。

一般情况下,不论是通过commit容器得到的镜像,或者是用dockerfile 制作的镜像,如果需要将镜像保存,可以使用我们之前提到的导出导入命令(save -o ; load -i)。导出的包,然后再传给其他dockerHost,这种方法也是可行的。

但往往在公司会有大量的镜像,而且不仅仅是单台的dockerHost。我们迫切需要有一个本地的共用的仓库,来实现多台dockerHost直接拉取镜像而不用手动的将镜像传来传去,之前的DockerHub可以帮助我们解决这个问题,当然前提需要申请一个DockerHub的账号,创建一个仓库。但这种方法需要消耗我们的带宽,因为是通过网络传输,既然是网络传输,就需要消耗一定的时间。

Registry仓库,是通过一个容器给我们提供的服务,是比较简易的私有仓库,以后在企业中还会有功能更加完善的Harbor仓库。

registry是官方提供的工具,可以用于构建私有的镜像仓库。你可以通过获取官方 registry 镜像来运行。

案例

注意:我们使用的是registry:2版本,还有一个registry镜像,这两个没有什么大的区别。registry: 是用Python语言写的,registry:2使用Go 语言写的,理论上来说,registry:2这个版本运行更快些。

搭建基于registry的私有仓库

1)用docker容器运行registry私有仓库服务。

注:registry是官方打包好的服务,端口为5000,就像其他虚拟出来的web服务一样

命令:
docker pull registry:2
在这里插入图片描述

2)运行私有仓库服务

创建数据卷目录:
mkdir /registry

执行命令运行容器:
docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2

释义:
-v: 挂载目录。 宿主机的目录(如果没有此目录会自动创建):容器内的目录。(数据卷:实现容器与宿主机之间的共享,通过一个目录"卷")

–restart=always:随着docker服务的启动而启动此容器

3)镜像重命名(要上传的镜像名需要注明私仓的ip)

因为上传或下载镜像的时候,需要将镜像的名称直接重命名,要注明它私有仓库的IP地址:暴露端口。否则将识别不到仓库而上传或下载失败。

格式为:docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]

命令:
docker tag nginx:latest 192.168.100.205:5000/nginx

4)编辑docker配置文件(因为默认是拉取docker官方的镜像,需要重新指定)

#初次上传命令:
docker push 192.168.100.205:5000/nginx #上传私有仓库会报错

#The push refers to repository [192.168.100.205:5000/nginx]
#Get https://192.168.100.205:5000/v2/: http: server gave HTTP response to HTTPS client

解决:

因为docker默认是从dockehub上下载镜像的,需要在本地指定一下私有仓库的IP加端口,这是因为 Docker默认不允许非HTTPS 方式推送镜像。 如果没做这一步,会报HTTPS的错。

编辑docker的配置文件,指定私有仓库地址

vim /usr/lib/systemd/system/docker.service

[Service]
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.100.205:5000

#修改完成之后重新加载docker和重启
systemctl daemon-reload
systemctl restart docker

#再次上传测试
docker push 192.168.100.205:5000/nginx

5)其他dockerhost上传私有仓库

这里注意,既然是私有仓库,肯定是要考虑多台DockerHost共用的情况, 如果有其他的DockerHost想要使用私有仓库,仅需要修改docker的配置文件,指定私有仓库的IP和端口即可。当然别忘了,更改过配置文件之后, daemon-reload ,restart docker服务。

修改docker配置文件

vim /usr/lib/systemd/system/docker.service

[Service]
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.100.205:5000

systemctl daemon-reload
systemctl restart docker.service
docker info
看到私仓ip即成功
在这里插入图片描述


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Friends of the wind

您的是我坚持原创免费作品的不懈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值