使用Nexus OSS 3.x创建Docker私有仓库
< 返回列表时间: 2019-11-26来源:OSCHINA
前言
之前将Nexus用于Maven私服以及yum代理,最近在官网上发现最新的Nexus 3.x还支持Docker仓库了,这里测试下。

基础环境
运行nexus需满足下列条件:
1,内存不小于2G,不一定是物理内存,swap也可以。
2,JDK需要1.8以上版本。




具体做法如下:
https://help.sonatype.com/repomanager3/download/download-archives---repository-manager-3
https://download.sonatype.com/nexus/3/nexus-3.14.0-04-unix.tar.gz
1,下载nexus,并解压到某个目录下。我这里放在 /home/nexus 中。这里面有两个目录, nexus-3.14.0-04 放置程序及配置文件, sonatype-work 放置数据文件。


2,修改nexus端口,默认是8081,此步骤可选。
/home/nexus/nexus-3.14.0-04/etc/nexus-default.properties


3,启动nexus,命令如下。这里不推荐使用root用户运行nexus服务。另外,它支持这些参数 start|stop|run|run-redirect|status|restart|force-reload 进行服务管理。
useradd -M nexuser cd /usr/local && chown nexuser:nexuser jdk1.8.0_112 su -c "/home/nexus/nexus-3.14.0-04/bin/nexus start" nexuser 注: 可以创建专有用户,保证对jdk目录有可操作权限


创建Docker私有仓库
1、打开浏览器即可看待nexus页面,默认用户名 admin ,默认密码 admin123

2,创建blob,用于数据存储,默认存放在default中。blob类似bucket,存放源数据及xml等文件。这里创建一个名叫docker的blob,默认存储位置在 /home/nexus/sonatype-work/nexus3/blobs/docker ,此步骤可选。


3、点击设置界面,选择Repositories,点击Create repository,如下图所示:

4、选择仓库类型,这里Docker有三种类型,分别是group、hosted、proxy。这里只演示hosted类型,所以选择docker(hosted),如下图:

5、配置仓库
首先必须为该仓库指定一个唯一的名称,然后是HTTP的端口,最后是docker的api与该仓库进行交互,如下图:


注意这个HTTP端口号也比较关键,在下面修改docker配置参数需用到,后面与该仓库进行交互也需要用到。
最后点击下方Create repository完成创建仓库。

6、安全设置
点击Realms - 将Docker Bearer Token Realm双击Active

https://help.sonatype.com/repomanager3/formats/docker-registry/authentication

修改docker配置
1、编辑配置
第一种
# vim /etc/systemd/system/multi-user.target.wants/docker.service
找到ExecStart属性,在dockerd后面添加--insecure-registry 服务器IP:Docker仓库端口 ,最终如下:
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.13:8082
第二种 vim /etc/docker/daemon.json { "insecure-registries":["http://192.168.1.13:8082"]


2、重启服务
# systemctl daemon-reload
# systemctl restart docker

3、查看设置是否生效
# docker info

4、登录nexus私服仓库, 按提示输入账号admin和密码(注意配置文件/root/.docker/config.json)
# docker login 192.168.1.13:8082


5、使用镜像推送测试
docker pull hello-world
docker tag hello-world 192.168.1.13:8082/hello-world
docker push 192.168.1.13:8082/hello-world



注:
打标记
在上传镜像之前需要先打一个tag,用于版本标记。
格式:
# docker tag <imageId or imageName> <nexus-hostname>:<repository-port>/<image>:<tag>
例如:
# docker tag hello-world 192.168.1.13:8082/hello-world:latest

上传镜像
# docker push 192.168.1.13:8082/hello-world

拉取镜像
从私服中下载镜像也很简单,执行以下命令即可
# docker pull 192.168.1.13:8082/hello-world

搜索镜像
# docker search 192.168.1.13:8082/hello-world


总结
用起来非常棒!

热门排行