• Easypack容器系列之:Nexus 3:Docker私库


    这里写图片描写叙述
    Nexus作为私库管理最为流行的工具之中的一个,用于包的管理和Docker镜像管理的私库管理场景中非经常常使用。Easypack利用最新版本号的oss版Nexus作为基础镜像用于提供相似服务。

    本文将同一时候给出具体步骤结合最新发行的Docker-CE版本号实现镜像私库的管理。

    Why Nexus 3

    这里整理了为什么使用Nexus 3的一些理由,在做选型的时候能够做一个简单參照。

    项目 具体
    为什么使用Nexus 3 http://blog.csdn.net/liumiaocn/article/details/62050525

    docker版本号

    本次使用的docker的版本号为17.03.0-ce,可是应该并不限于此版本号,其它版本号未作验证。

    [root@liumiaocn ~]# docker version
    Client:
     Version:      17.03.0-ce
     API version:  1.26
     Go version:   go1.7.5
     Git commit:   3a232c8
     Built:        Tue Feb 28 08:10:07 2017
     OS/Arch:      linux/amd64
    
    Server:
     Version:      17.03.0-ce
     API version:  1.26 (minimum version 1.12)
     Go version:   go1.7.5
     Git commit:   3a232c8
     Built:        Tue Feb 28 08:10:07 2017
     OS/Arch:      linux/amd64
     Experimental: false
    [root@liumiaocn ~]#

    下载镜像

    [root@liumiaocn ~]# docker pull liumiaocn/nexus
    Using default tag: latest
    latest: Pulling from liumiaocn/nexus
    Digest: sha256:b93f9a6bba2b35ada33c324cd06bd2c732fc1bed352df186af1a013e228af8d8
    Status: Image is up to date for liumiaocn/nexus:latest
    [root@liumiaocn ~]#

    启动Nexus

    项目 具体
    Nexus UI 8081
    private repo 8082
    proxy repo 8083
    URL http://192.168.32.123:8081/
    [root@liumiaocn ~]# docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 --name nexus liumiaocn/nexus
    222abae47fcf9d32c821bff6426edd03f6757a3dd4cbe07517dada5d800e173f
    [root@liumiaocn ~]#

    logon

    项目 具体
    URL http://192.168.32.123:8081/
    username称 admin
    用户password admin123

    这里写图片描写叙述

    登陆之后
    这里写图片描写叙述

    仓库类型

    具体仓库类型主要分为hosted/proxy/group三种。

    具体含义例如以下:

    项目 具体说明
    hosted 本地存储。像官方仓库一样提供本地私库功能
    proxy 提供代理其它仓库的类型
    group 组类型,能够组合多个仓库为一个地址提供服务

    创建priavete仓库

    创建一个Hosted的仓库作为private仓库,具体设定信息例如以下:

    项目 具体说明
    类型 docker (hosted)
    Name docker-repo-private
    HTTP Port 8082
    Blob store docker-repo-private
    Deployment policy Allow redeploy

    这里写图片描写叙述

    创建proxy仓库

    创建一个proxy仓库。具体设定信息例如以下:

    项目 具体说明
    类型 docker (proxy)
    Name docker-repo-proxy
    Location of the remote repository being proxied https://registry-1.docker.io
    Docker Index Use Docker Hub
    Blob store docker-repo-proxy

    这里写图片描写叙述

    创建group仓库

    创建一个group仓库。具体设定信息例如以下:

    项目 具体说明
    类型 docker (group)
    Name docker-repo-group
    HTTP Port 8083
    Blob store docker-repo-group
    Member repositories docker-repo-private
    Member repositories docker-repo-proxy

    这里写图片描写叙述

    docker设定

    Docker的私库能够使用HTTP或者HTTPS。Nexus 3都予以支持。本文的方式採用HTTP方式。因此须要设定docker。在docker启动前设定例如以下信息是须要的

    项目 具体说明
    设定对象文件 /etc/docker/daemon.json
    设定内容 insecure-registries

    设定具体内容。例如以下所看到的:

    [root@liumiaocn ~]# cat /etc/docker/daemon.json
    {
      "insecure-registries": [
        "192.168.32.123:8082",
        "192.168.32.123:8083"
      ],
      "disable-legacy-registry": true
    }
    [root@liumiaocn ~]#

    重新启动docker

    [root@liumiaocn docker]# systemctl restart docker
    [root@liumiaocn docker]#

    启动nexus

    随着docker的重新启动。nexus的容器也须要启动。具体例如以下所看到的:

    [root@liumiaocn docker]# docker start nexus
    nexus
    [root@liumiaocn docker]#

    确认

    至此,Nexus的设定准备基本就绪。能够确认结果了。

    docker login

    为了进行操作。须要事先进行docker login的操作

    项目 具体说明
    private仓库 docker login -u admin -p admin123 192.168.32.123:8082
    proxy仓库 docker login -u admin -p admin123 192.168.32.123:8083

    运行确认

    [root@liumiaocn ~]# docker login -u admin -p admin123 192.168.32.123:8082
    Login Succeeded
    [root@liumiaocn ~]# docker login -u admin -p admin123 192.168.32.123:8083
    Login Succeeded
    [root@liumiaocn ~]#

    proxy仓库确认

    从remote仓库pull下来镜像。然后确认是否在proxy仓库中存在

    [root@liumiaocn ~]# docker pull 192.168.32.123:8083/alpine:3.5
    3.5: Pulling from alpine
    627beaf3eaaf: Downloading
    unknown blob
    [root@liumiaocn docker]#

    查了一下nexus的一些issue,发现有不少都是跟blob相关,看起来相关的小的问题另一些在不断的收拾中,可是不影响结果。
    确认proxy仓库,发现pull的alpine的3.5版本号已然在proxy仓库中保存完成,所以上面的unknown blob也确实没有影响结果。
    这里写图片描写叙述

    private仓库确认

    事前镜像确认

    [root@liumiaocn ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    busybox             latest              00f017a8c2a6        2 days ago          1.11 MB
    liumiaocn/maven     latest              833b66f10ce6        5 days ago          160 MB
    liumiaocn/nexus     latest              932d715eb7e1        5 days ago          460 MB
    liumiaocn/gitlab    latest              2462fb291203        5 days ago          1.21 GB
    liumiaocn/jenkins   latest              6668ecd39e4f        5 days ago          293 MB
    [root@liumiaocn ~]#

    tag busybox镜像

    [root@liumiaocn ~]# docker tag busybox 192.168.32.123:8082/busybox:latest
    [root@liumiaocn ~]# docker images
    REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
    192.168.32.123:8082/busybox   latest              00f017a8c2a6        2 days ago          1.11 MB
    busybox                       latest              00f017a8c2a6        2 days ago          1.11 MB
    liumiaocn/maven               latest              833b66f10ce6        5 days ago          160 MB
    liumiaocn/nexus               latest              932d715eb7e1        5 days ago          460 MB
    liumiaocn/gitlab              latest              2462fb291203        5 days ago          1.21 GB
    liumiaocn/jenkins             latest              6668ecd39e4f        5 days ago          293 MB
    [root@liumiaocn ~]#

    docker push

    [root@liumiaocn ~]# docker push 192.168.32.123:8082/busybox:latest
    The push refers to a repository [192.168.32.123:8082/busybox]
    c0de73ac9968: Pushed
    latest: digest: sha256:68effe31a4ae8312e47f54bec52d1fc925908009ce7e6f734e1b54a4169081c5 size: 527
    [root@liumiaocn ~]#

    结果确认:busybox镜像已经被正常地push到了private仓库中
    这里写图片描写叙述

    docker pull

    为了确认docker pull的动作。事前先将之前的busybox先行删除,以确认确实下载了新的busybox镜像到本地。

    [root@liumiaocn ~]# docker rmi busybox
    Untagged: busybox:latest
    Untagged: busybox@sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f
    [root@liumiaocn ~]# docker rmi 192.168.32.123:8082/busybox
    Untagged: 192.168.32.123:8082/busybox:latest
    Untagged: 192.168.32.123:8082/busybox@sha256:68effe31a4ae8312e47f54bec52d1fc925908009ce7e6f734e1b54a4169081c5
    Deleted: sha256:00f017a8c2a6e1fe2ffd05c281f27d069d2a99323a8cd514dd35f228ba26d2ff
    Deleted: sha256:c0de73ac99683640bc8f8de5cda9e0e2fc97fe53d78c9fd60ea69b31303efbc9
    [root@liumiaocn ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    liumiaocn/maven     latest              833b66f10ce6        5 days ago          160 MB
    liumiaocn/nexus     latest              932d715eb7e1        5 days ago          460 MB
    liumiaocn/gitlab    latest              2462fb291203        5 days ago          1.21 GB
    liumiaocn/jenkins   latest              6668ecd39e4f        5 days ago          293 MB
    [root@liumiaocn ~]#

    docker pull操作:能够看到确实是从private仓库下载下来了镜像,并且速度也明显快了非常之多。

    [root@liumiaocn ~]# docker pull 192.168.32.123:8082/busybox
    Using default tag: latest
    latest: Pulling from busybox
    04176c8b224a: Pull complete
    Digest: sha256:68effe31a4ae8312e47f54bec52d1fc925908009ce7e6f734e1b54a4169081c5
    Status: Downloaded newer image for 192.168.32.123:8082/busybox:latest
    [root@liumiaocn ~]# docker images
    REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
    192.168.32.123:8082/busybox   latest              00f017a8c2a6        2 days ago          1.11 MB
    liumiaocn/maven               latest              833b66f10ce6        5 days ago          160 MB
    liumiaocn/nexus               latest              932d715eb7e1        5 days ago          460 MB
    liumiaocn/gitlab              latest              2462fb291203        5 days ago          1.21 GB
    liumiaocn/jenkins             latest              6668ecd39e4f        5 days ago          293 MB
    [root@liumiaocn ~]#

    总结

    至此,怎样使用Nexus管理Docker镜像已然十分清楚,可是怎样非常好的管理镜像,备份机制/版本号控制/差分管理/定期cache/及时清理等方面还有非常多问题须要考虑。须要在实际的工作中不断实践总结。

  • 相关阅读:
    java.lang.ClassCastException: java.util.HashMap$Values cannot be cast to java.util.List 转换异常
    React Swiper轮播图(二)
    超详细带你入门开发一个超实用的浏览器插件
    手臂太细如何增加纬度?这5个手臂锻炼动作,让你的手臂变粗壮
    2021百度世界大会精华总结(AI应用向)
    1、saltstack 安装部署
    MySQL的varchar(10)能存多少个汉字
    学习资料总结
    基于Spark的数据工厂(Data Factory):从设计到实现
    IntelliJ IDEA创建maven web项目(IDEA新手适用)
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/8308973.html
Copyright © 2020-2023  润新知