Docker篇 (二) 镜像管理-镜像仓库

一、前言

当我们制作好了自己的镜像后,为了在其他服务器上可以使用该镜像,我们需要把镜像推送(push)到仓库(Repository),然后在其他服务器上拉取(pull)该镜像。仓库有分公共仓库和私有仓库,如果要在公司中使用Docker,基本上我们不太可能会把商业项目的镜像上传到公共仓库中,所以私有仓库也就有了用武之地,它能避免商业项目暴露出去的风险。

提供仓库服务主要有3种方式:

  • Docker Hub  - Docker官方维护的一个仓库,默认只提供公开仓库,私人仓库是收费模式,最低是7美元/月提供5个私人仓库
  • Registry镜像  - Docker官方镜像,此镜像包含了Docker Registry HTTP API V2的实现,适用于Docker 1.6及1.6以上版本
  • Harbor  - VMware公司开源的企业级Registry项目

二、Register镜像

通过Register镜像来搭建私人仓库,使用了2台服务器来演示,一台作为仓库,一台作为客户端

2.1 在192.168.6.92服务器

拉取镜像

docker pull registry

运行容器

docker run -p 80:5000 -itd --name hub registry

2.2 在192.168.6.91服务器

由于在192.168.6.92服务器运行的不是HTTPS协议,push镜像给92服务器时会出现如下提示:

Get https://192.168.6.92:80/v2/: http: server gave HTTP response to HTTPS client

所以需要修改91服务器的/lib/systemd/system/docker.service文件,增加启动参数--insecure-registry=192.168.6.92:80

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
改为
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=192.168.6.92:80

然后重启Docker服务

systemctl daemon-reload
systemctl restart docker

现在将《Docker篇 (一) 制作镜像-Tomcat开启APR模式》文章中创建的镜像推送到服务器

#格式 <registry_ip>:<registry_port>/<image_name>:<image_tag>
docker tag anron 192.168.6.92:80/anron:v1.0
docker push 192.168.6.92:80/anron:v1.0

查看镜像是否推送成功

[root@docker1 imagebuilder]# curl http://192.168.6.92:80/v2/_catalog
{"repositories":["anron"]}
[root@docker1 imagebuilder]# curl http://192.168.6.92:80/v2/anron/tags/list
{"name":"anron","tags":["v1.0"]}

推送成功后在其他服务器通过下面的命令就可以拉取镜像了

docker pull 192.168.6.92:80/anron:v1.0

三、Harbor

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务,是VMware公司开源的企业级Registry项目,基于Docker Registry开发的,它除了提供友好的Web管理界面、角色和用户权限管理、用户操作审计、多个Registry节点的镜像复制等功能外,它还可以整合K8s的插件(管理大量的服务器时,手动在每台服务器上去输入命令管理大量的容器是不现实的,K8s提供了更高级更灵活的管理方式)。
 

发布了5 篇原创文章 · 获赞 0 · 访问量 145

猜你喜欢

转载自blog.csdn.net/anron/article/details/104844874