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

登陆之后

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1bWlhb2Nu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

仓库类型

具体仓库类型主要分为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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1bWlhb2Nu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

创建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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1bWlhb2Nu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

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仓库中

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1bWlhb2Nu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">

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/及时清理等方面还有非常多问题须要考虑。须要在实际的工作中不断实践总结。

Easypack容器系列之:Nexus 3:Docker私库的更多相关文章

  1. docker私库harbor的搭建

    1.文件下载 # wget https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.5.1.tgz 安装官网 ...

  2. docker私库Harbor部署(转载)

    系统环境 centos7.3docker-ce docker version: 18.03.0docker-compose version: 1.21.0 Install Docker CE 安装依赖 ...

  3. ubuntu16搭建docker私库

    测试环境如下: 一.docker的安装 安装方法请查看这里的 安装教程 二.设置普通用户 1. centos的设置方法 $ sudo gpasswd -a docker ${USER} 2. ubun ...

  4. Docker搭建Nexus(Maven私库)

    0.镜像的查找:docker search nexus 1.拉取官方镜像:docker pull sonatype/nexus3 2.创建了自己的目录 (/opt/nexus/nexus-data) ...

  5. 使用nexus搭建maven私库

    什么是nexus? nexus是一个maven仓库管理器,使用nexus可以快速便捷的搭建自己的maven私有仓库. docker安装nexus 拉取镜像 docker pull sonatype/n ...

  6. Docker version 1.12.5建立registry私库

    sudo docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry :前面的是宿主机的地址(/opt/da ...

  7. Docker4-docker私库的搭建及常用方法-docker-registry方式

    一.简单介绍 前面已经介绍,可以使用Docker Hub公共仓库,但是大多数情况企业都需要创建一个本地仓库供自己使用.这里介绍几种搭建私库的方法 私库的好处有几点 1.节约带宽 2.可以自己定制系统 ...

  8. Docker 容器中搭建 nexus npm私库

    1,版本 dockers :1.13.1   :nexus 3 2,安装 docker pull liumiaocn/nexus 3,启动 项目 详细 Nexus UI 8081 private re ...

  9. Docker系列-第五篇Docker容器数据卷

    1.是什么 在生产环境中使用 Docker,往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,这必然涉及容器的数据管理操作 . 容器中的管理数据主要有两种方式 : 数据卷 ( Data V ...

随机推荐

  1. 实战WCF中net.tcp和net.msmq绑定协议

    平时很少写博文的,以前都是转载其他园友的文章,这几天有时间就自己尝试写一些wcf相关的文章,希望能给有需要的人带来一点帮助吧,水平有限再加上初次动手,写得不好还请多多包含!废话不多说了直接进入正题. ...

  2. [xampp] /usr/bin/env: php: No such file or directory

    ln -s /opt/lampp/bin/php /usr/local/bin/php

  3. Codeforces 1023 D.Array Restoration-RMQ(ST)区间查询最值 (Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Fi)

    D. Array Restoration 这题想一下就会发现是只要两个相同的数之间没有比它小的就可以,就是保存一下数第一次出现和最后一次出现的位置,然后查询一下这个区间就可以,如果有0的话就进行填充. ...

  4. 洛谷 P1068 分数线划定【结构体排序】

    题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对 所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根 据计划录取人数的150%划 ...

  5. 12、Flask实战第12天:子域名

    什么是子域名,我们的后台管理系统, 比如cms.heboan.com.配置子域名需要用到蓝图技术: 我现在buleprints下面创建一个cms.py 蓝图 from flask import Blu ...

  6. [Atcoder Regular Contest 063] Tutorial

    Link: ARC063 传送门 C: 将每种颜色的连续出现称为一段,寻找总段数即可 #include <bits/stdc++.h> using namespace std; ,len; ...

  7. [Codeforces 8E] Beads

    Brief Intro: 将所有n位二进制串中满足字典序不大于其逆序串,取反串,逆序取反串中按字典序排序的第m个输出 n<=50 Algorithm: 首次接触数位DP的题目 根据数据范围,我们 ...

  8. 【博弈论】【SG函数】【枚举】bzoj1188 [HNOI2007]分裂游戏

    因为第i个瓶子里的所有豆子都是等价的,设sg(i)表示第i个瓶子的sg值,可以转移到sg(j)^sg(k)(i<j<n,j<=k<n)的状态. 只需要考虑豆子数是奇数的瓶子啦, ...

  9. [CF538H]Summer Dichotomy

    [CF538H]Summer Dichotomy 题目大意: ​ 将若干个学生分为两个班级\(S_1,S_2\),每个班的学生数分别为\(n_1,n_2\)(甚至可以没有学生,也可以没有老师).给出限 ...

  10. Matlab与神经网络入门

    第一节.神经网络基本原理  1. 人工神经元( Artificial Neuron )模型  人工神经元是神经网络的基本元素,其原理可以用下图表示: 图1. 人工神经元模型 图中x1~xn是从其他神经 ...