• Docker本地镜像管理之Docker Registry


    一个系统可能包含着很多个微服务即有很多个镜像,当镜像越来越多的时候,就必须得有一个地方来管理这些镜像,Docker官方提供了Docker Hub来维护管理所有的镜像,只是对于免费用户而言,只能创建一个私有仓库,付费用户才拥有更多私有仓库的权限,对此官方开源了Docker Registry的源代码,我们可以通过它在局域网内部搭建私有的镜像注册中心。另外国内的阿里云也支持镜像管理。相当于本地有个私有的Docker hub。
    开始搭建本地注册中心

    1、下载镜像Docker Registry

    docker pull registry

     

    2、创建本地私有容器库

    # 创建一个名为registry的容器,将宿主机5000端口映射到容器的5000端口,将宿主机的/myregistry目录映射到容器/tmp/registry目录作为数据容器卷

    docker run -id -p 5000:5000 -v /myregistry/:/tmp/registry --privileged=true registry

    默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便与宿主机联调。

    docker挂载主机目录访问如果出现cannot open directory:Permission defined,解决办法:在挂载目录后多加一个--privileged=true即可。

    如果是centos7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为。

    在SELinux里挂载目录被禁止掉了,如果要开启,我们一般会用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即使使用该参数,container内的root拥有真正的root权限,否则container内的root只是外部的一个普通用户权限。

    端口5000->5000,左边是主机端口,右边是docker 容器实例端口。

    3、验证私服库上的镜像

    浏览器访问:http://192.168.63.173:5000/v2/,查看本地镜像列表

    或者命令执行

    [root@localhost ~]# curl -XGET http://192.168.63.173:5000/v2/_catalog
    {"repositories":[]}

    发现本地没有任何镜像。

    开始案例测试

    运行一个doker实例,然后编译安装好指定的环境配置或者新升级的环境镜像

    4、将新镜像myubuntu:1.0修改为符合私服规范的tag

    docker tag myubuntu:1.0 192.168.63.173:5000/myubuntu:1.0  //相当于clone出一份镜像,看下图

    由于docker私服库默认不支持http形式推送,所以需要做配置,取消默认配置,修改完后如果不生效,建议重启docker

     vi /etc/docker/daemon.json
    {
        "insecure-registries":["192.168.63.173:5000"]
    }

    重新启动docker服务以及本地私服库

    systemctl restart docker
    systemctl status docker
    
    docker run -id -p 5000:5000 -v /myregistry/:/tmp/registry --privileged=true registry

    5、push推送到私服库

    [root@localhost ~]# docker push 192.168.63.173:5000/myubuntu:1.0
    The push refers to repository [192.168.63.173:5000/myubuntu]
    ff9ba62520f1: Pushed 
    c5ec52c98b31: Pushed 
    1.0: digest: sha256:8626f06773a2d40bcab8205b6d1414aeb04a5c0a889d452686fd4cd8d245a24b size: 741

    6、验证私服库镜像有哪些

    curl -XGET http://192.168.63.173:5000/v2/_catalog

    7、删除本地镜像,pull私服镜像

     

    docker pull 192.168.63.173:5000/myubuntu:1.0

      

     运行测试

     docker run -it 192.168.63.173:5000/myubuntu:1.0 /bin/bash

    ok

  • 相关阅读:
    201671010410 冯婷秀 实验三 作业互评与改进
    读《构建之法》感想
    实验十四 团队项目评审&课程学习总结
    201671010412 郭佳 实验四附加实验
    201671010412 郭佳 英文文本统计分析
    201671010412 郭佳 实验二 软件工程个人项目
    201671010412 郭佳 实验三 作业互评与改进
    在阅读《现代软件工程—构建之法》后的思考问题
    金生芳-实验十四 团队项目评审&课程学习总结
    实验四 附加实验-项目互评
  • 原文地址:https://www.cnblogs.com/wt645631686/p/16357702.html
Copyright © 2020-2023  润新知