【docker系列】使用registry-v2搭建镜像仓库及完成镜像分发
完成镜像制作之后,需要通过渠道将镜像分发出去
- 公有仓库:除了Docker官方的DockerHub之外,国内也有很多的公有镜像仓库可以用于镜像分发:docker中国官方库、阿里云镜像仓库等等。
- 私有仓库:如果制作的镜像只是在企业内为各个项目组服务,就不可能上传到公有仓库,而是需要企业内部搭建私有仓库。
目前广泛应用的Docker 官方提供的私有仓库是Docker Registry V2,下面我们就来学习一下如何搭建及使用它。
一、搭建私有仓库
既然我们已经学习了Docker,使用Docker 搭建软件服务是高效便捷的方式,即使Docker 私有仓库也不例外。下载镜像:
docker pull registry:2
- 1
在私有仓库所在的主机目录新建一个文件夹,用于持久化保存仓库中的镜像。
mkdir -p /opt/registry;
- 1
使用docker镜像启动私有仓库容器服务,将容器内/var/lib/registry
路径映射到宿主机/opt/registry
用于持久化保存仓库中的镜像。
docker run -d \
-v /opt/registry:/var/lib/registry \
-p 5000:5000 \
--name zimug-repo registry:2
- 1
- 2
- 3
- 4
容器启动成功之后,通过浏览器访问私有仓库所在的宿主机,端口映射5000。得到下面的结果,证明我们的私有仓库搭建成功了。
二、docker配置仓库地址
仓库搭建成功了,下一步我们就可以向仓库中提交镜像了。但是当我们真正去做的时候,会发现镜像根本提交不上去。效果如下:
这是因为Docker Registry V2从安全角度考虑禁止了HTTP协议传输镜像数据,默认支持HTTPS。其实如果企业内部使用HTTPS也没有很大的必要。可以通过下面的方法绕过这道坎,修改文件vim /etc/docker/daemon.json
,增加insecure-registries配置,值为私有仓库的访问地址。
{
"registry-mirrors":["https://registry.docker-cn.com"],
"insecure-registries":["192.168.1.111:5000"]
}
- 1
- 2
- 3
- 4
本文先为大家使用这种非HTTPS的搭建方式,在企业级应用中经常使用的是Harbor(依赖于Registry)作为镜像仓库,并且提供图形界面管理,后面文章中会为大家介绍。本文先对docker 私有镜像仓库有个概念,并且会向仓库推送镜像即可。
修改配置完成之后重启docker服务,重启docker服务容器停止,所以zimug-repo容器也重启一下
# systemctl daemon-reload
# systemctl restart docker
# docker restart zimug-repo
- 1
- 2
- 3
- 4
三、镜像文件分发使用
私有镜像仓库搭建完成,并且支持HTTP协议传输,下面我们就可以上传镜像文件了。在此之前我们还需要为镜像打标签,如下:
docker tag zimug/jdk:11 192.168.1.111:5000/jdk:11
- 1
可以看出来为镜像打标签的目的,就是为镜像指定私有仓库的ip地址+端口,表明镜像上传到哪个仓库。使用docker push
命令将镜像文件上传到私有仓库。
# docker push 192.168.1.111:5000/jdk:11
The push refers to repository [192.168.1.111:5000/jdk]
c439a7f02e2b: Pushed
78e244823116: Pushed
174f56854903: Pushed
11: digest: sha256:b137394b3ce324bb6c71967a7e7337265510b23a8c4f4c02fcfff9d29a946133 size: 955
- 1
- 2
- 3
- 4
- 5
- 6
需要说明的是Docker Registry并不提供UI操作界面(后续文章会介绍Harbor图形界面化工具),所以我们想知道镜像是否上传成功需要通过API的方式查询,如下:
# 查询镜像仓库中镜像的分类
http://192.168.1.111:5000/v2/_catalog
{"repositories":["jdk"]}
# 查询奖项仓库中的镜像
http://192.168.1.111:5000/v2/jdk/tags/list
{"name":"jdk","tags":["11"]}
- 1
- 2
- 3
- 4
- 5
- 6
另外我们可以看一下宿主机中/opt/registry
,该目录是私有仓库容器持久化镜像数据在宿主机上的映射目录,用于持久化保存镜像。可以看到其目录下包含我们上传的JDK镜像数据及目录,也可以证明镜像上传成功了。
镜像上传成功之后,在任何一台安装了docker的服务器上,都可以获取私有仓库中的镜像,如:docker pull 192.168.1.111:5000/jdk:11
文章来源: zimug.blog.csdn.net,作者:字母哥哥,版权归原作者所有,如需转载,请联系作者。
原文链接:zimug.blog.csdn.net/article/details/124939427
- 点赞
- 收藏
- 关注作者
评论(0)