爱上开源之DockerUI-自建Docker镜像仓库实战

前言

Docker镜像仓库(Repository)负责镜像文件的存储和分发的工作,也被称为registry;是Docker客户端执行pull和push操作时,都是和Docker进行仓库进行交互,而实现从仓库获取和保持镜像的交互过程。Docker的官方镜像仓库就是我们经常提到的Docker的Hub官网。 在Docker客户端,执行docker info命令,就可以查询到我们的docker客户端里配置的镜像仓库的地址;

 

爱上开源之DockerUI-自建Docker镜像仓库实战_第1张图片

如图中所显示的,Registry: https://index.docker.io/v1/ 这个实际上对应的就是Docker的官方仓库;在我们的实际使用docker的过程中,只是从官方的docker仓库里获取或者保存镜像文件可能不能满足我们的需求;或者是本身我们的镜像只是私有使用的;在这样的场景里,我们就需要建立自己的私有仓库。

今天的这个文章,咱们要讲的就是部署私有镜像仓库的实战过程;

在目前的docker镜像仓库的产品里,有几个主流产品,包括Docker registry(Distribution), Harbor和Nexus。  今天我们这里主要介绍其中的Docker Registry和Nexus这两个产品。

Docker registry

Docker registry(Distribution)是Docker公司自带的产品,完全支持Registry的API;最初版本的registry由python实现,该版本在0.9之后停止了开发, 由新的项目distribution(新docker register(也被称为Distribution,在Docker的开源项目组里可以找到该项目);Distribution项目由Golang实现。

可以通过docker registry的镜像文件,来部署Docker registry作为我们的私有仓库;

1. 下载docker registry的镜像文件

[root@XNode01 ~]# docker pull registry

 2. 准备权限配置文件

[root@XNode01 ~]# mkdir -p /data/registry/auth

 3. 安装httpd-tools并产生密码文件

[root@XNode01 ~]# yum install -y httpd-tools
[root@XNode01 ~]# htpasswd -Bbn admin 123456 > /data/registry/auth/htpasswd

爱上开源之DockerUI-自建Docker镜像仓库实战_第2张图片

4. 启动registry

[root@XNode01 ~]# docker container run -p 5000:5000 --restart=always \ 
--name registry \
-v /data/registry/auth/:/auth \
-e "REGISTRY_AUTH=htpasswd" \ 
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry

 

5.  通过浏览器验证 

访问http://ip:5000/v2/_catalog地址

爱上开源之DockerUI-自建Docker镜像仓库实战_第3张图片

输入admin和123456; 刚才的htpasswd文件就是记录的这个用户和密码

目前没有镜像文件,返回的是空的内容

备注: 特别注意:由于咱们现在启动的registry是不支持https访问的,默认情况下。docker客户端在和镜像仓库进行交互是使用https协议的。 我们可以设置docker的daemon设置,让其也可以通过http和镜像仓库进行访问。

修改/etc/docker/daemon.json文件,如果没有此文件,可以创建; 加入以下内容

"insecure-registries": ["192.168.56.102:5000"]

 

 6 通过Docker客户Push命令进行验证

[root@XNode01 ~]# docker login 192.168.56.102:5000
Username: admin
Password: 

在交互环境里,输入admin和123456; 登录成功

 用registry这个镜像来做push的测试; 先要修改tag

[root@XNode01 ~]# docker image tag registry 192.168.56.102:5000/registry
[root@XNode01 ~]# docker image ls

爱上开源之DockerUI-自建Docker镜像仓库实战_第4张图片

推送修改后的tag

[root@XNode01 ~]# docker image push 192.168.56.102:5000/registry 

 再次访问http://ip:5000/v2/_catalog地址; 进行验证

新push上去的镜像已经展示到这个地方了。 

7. 测试pull功能,从私有仓库192.168.56.102:5000里下载镜像

先删除掉docker机器上已经有的原镜像

[root@XNode01 ~]# docker image rm 192.168.56.102:5000/registry

测试下载命令

[root@XNode01 ~]# docker image pull 192.168.56.102:5000/registry
Using default tag: latest
latest: Pulling from registry
Digest: sha256:6f86956ed3802764cf98f5f20ed549a649ffd1f24fb273aef48748da5531b576
Status: Downloaded newer image for 192

 

至此,使用Docker registry部署私有的镜像仓库成功完成。

这篇文章,记录了有关使用Docker Registry进行私有Docker仓库的安装实战过程; 并进行了Pull和push的测试。 在下一个文章里,我们会介绍另一个使用非常广泛的另一个Registry产品Nexus, Nexus不仅支持全面的Docker Registry V1.0和V2.0接口标准;还拥有简单而方便的操作界面,和更强大的管理支持。 敬请各位朋友下一期关注。

你可能感兴趣的:(golang,爱上开源,Docker,docker,容器,运维)