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


    前言

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

     

    如图中所显示的,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并产生密码文件

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

    4. 启动registry

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

     

    5.  通过浏览器验证 

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

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

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

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

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

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

     

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

    1. [root@XNode01 ~]# docker login 192.168.56.102:5000
    2. Username: admin
    3. Password:

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

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

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

    推送修改后的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

    测试下载命令

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

     

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

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

  • 相关阅读:
    One UI 5 升级来了
    分布式 PostgreSQL 集群(Citus)官方示例 - 时间序列数据
    第一章 信息化和信息系统
    数据结构之栈和队列
    Boost升压电路调试
    pdf怎么压缩的小一点?
    leetcode 146. LRU 缓存
    分类预测 | MATLAB实现WOA-CNN-GRU-Attention数据分类预测
    kafka基础介绍
    Elasticsearch和sboot整合
  • 原文地址:https://blog.csdn.net/inthirties/article/details/126225824