如何搭建一个docker私有仓库(基于docker的私有云部署)

什么是Docker仓库

仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(Tag)

仓库分为公开仓库(Public)私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool 等,可以为大陆用户提供更稳定的访问。

如何搭建一个docker私有仓库(基于docker的私有云部署)

从Docker仓库下载镜像后,运行容器

当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像的时候,只需要从仓库上 pull 下来就可以了。

私有仓库的搭建

如何搭建一个docker私有仓库(基于docker的私有云部署)

从私有仓库拉取镜像部署到不同的运行环境

官方的Docker hub是一个用于管理公共镜像的地方,我们可以在上面找到想要的镜像,也可以把自己的镜像推送上去。但对于企业来说,通常会创建一个私有仓库来存放程序镜像,以实现企业级标准的CI/CD流程。

那么如何拥有一个私有的镜像仓库用于管理我们自己的镜像呢?这个可以通过开源软件Registry来达成目的。下面介绍一下docker私有仓库的搭建方法。

Docker私有仓库安装

Docker官方在Docker hub上提供了registry的镜像,可以直接使用该镜像来构建一个容器,搭建私有仓库服务。

1. 拉取仓库镜像。从Docker hub上面拉取私有仓库镜像,拉取完成后可以看到TAG为latest的registry镜像。

docker pull registry

[root@k8s-master ~]# docker images
REPOSITORY TAG    IMAGE ID         	CREATED       	SIZE
registry         latest  b8604a3fe854  3 weeks ago 	  26.2MB

2. 启动仓库容器。用镜像文件 registry:latest 启动私有仓库容器

docker run -di --name=my_registry -p 5000:5000 registry:latest

其中:

  • -di: docker后台启动,并开启,控制台交互;
  • -name: 指定容器名字,后续可以通过名字进行容器管理;
  • -p: 指定容器暴露的端口, 将主机5000端口绑定到容器的5000端口。

3. 设置开机自启动

docker container update --restart=always my_registry

docker container update 命令用于更新一个或多个容器的配置。创建容器时添加参数 --restart=always ,目的是:当 Docker 重启时,容器可以自动启动。

4. 测试私有镜像仓库是否搭建成功。

打开浏览器,输入地址:http://121.36.87.2:5000/v2/ ,看到以下界面表示registry运行正常。

如何搭建一个docker私有仓库(基于docker的私有云部署)

测试registry运行情况

5 上传镜像到Registry

首先将本地主机的镜像命名为符合仓库要求的格式:registry_url:port/ImageName:tag。

通过docker tag命令来实现命名,可以看到本地主机有了新的镜像文件。

docker tag jdk_8u191:20190307 192.168.179.128:5000/jdk_8u191:20190307

如何搭建一个docker私有仓库(基于docker的私有云部署)

上传jdk镜像到Registry仓库:

docker push 192.168.179.128:5000/jdk_8u191:20190307

push成功之后,查看Registry服务器 /opt/registry 目录下已经有了刚推送上来的registry镜像,也可以在浏览器中输入http://ip_add:5000/v2/_catalog

如何搭建一个docker私有仓库(基于docker的私有云部署)

至此,我们的Registry私有仓库搭建完成,如果在今后中要使用,可以使用以下命令拉取:

docker pull ip_add:5000/jdk_8u191:20190307 

Registry的发展

Docker 开源了其 registry 实现,目前已经成为 CNCF 的沙箱项目Distribution。不过,Distribution 项目仅仅实现了对镜像存储的支持,对企业级的一些管理诉求并无法提供支持。

为了实现企业级镜像仓库的支持,Harbor 项目应运而生。Harbor Registry由 VMware 公司中国研发中心云原生实验室原创,并于 2016 年 3 月开源。

Harbor 在 Docker Distribution的基础上增加了企业用户必需的权限控制、镜像签名、安全漏洞扫描和远程复制等重要功能,还提供了图形管理界面。目前Harbor已经成为了国内企业私有容器仓库的首选方案。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论