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. 关系和非关系型数据库区别(以及oracle和mysql的区别)

    一.关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库.    关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐 ...

  2. 使用Pygame制作微信打飞机游戏PC版

    前一阵子看了一篇文章:青少年如何使用Python开始游戏开发 .看完照葫芦画瓢写了一个,觉得挺好玩儿,相当于简单学了下Pygame库.这篇文章是个12岁小孩儿写的,国外小孩儿真心NB,想我12岁的时候 ...

  3. ubuntu下中文输入法安装

    个人认为ubantu下fcitx比sogo好用 安装fcitx首先到ubantu软件中心下载fcitx两个软件,一个是配置软件,一个是输入法软件 到system setting中language su ...

  4. Laravel5.5配置使用redis

    1.安装redis linux上redis的安装与配置 2.安装redis客户端 composer require predis/predis或者安装 PhpRedis PHP 扩展brew inst ...

  5. 更换介质:请把标有…… DVD 的盘片插入驱动器“/media/cdrom/”再按回车键“ 解决方法

    https://blog.csdn.net/no7oor/article/details/12776815

  6. MySQL InnoDB MVCC深度分析

    关于MySQL的InnoDB的MVCC原理,很多朋友都能说个大概: 每行记录都含有两个隐藏列,分别是记录的创建时间与删除时间 每次开启事务都会产生一个全局自增ID 在RR隔离级别下 INSERT -& ...

  7. (3)三剑客之sed

    (1)基本介绍 1) 工作流程:sed每次处理一行内容,处理时,把当前处理的行存储在临时缓存区,称为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,直到内容处理完毕2 ...

  8. USACO1.3.2修理牛棚

    在学习一段时间贪心并写了一些贪心题之后,又一次看到了农夫和牛幸福美满的生活故事(雾).嘛,闲话少说,上题目 在一个暴风雨的夜晚,农民约翰的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满 ...

  9. Codeforces Beta Round 84 (Div. 2 Only)

    layout: post title: Codeforces Beta Round 84 (Div. 2 Only) author: "luowentaoaa" catalog: ...

  10. [USACO06DEC] Milk Patterns

    题目描述 Farmer John has noticed that the quality of milk given by his cows varies from day to day. On f ...