Nexus3 docker hosted私有仓库搭建指南
1、登录至nexus3控制中心;选择 Blob Stores 创建一个docker blod
2、创建docker(hosted)类型仓库
- 指定私有仓库名
- 指定端口
- 允许拉取方式
- 指定docker blod
3、指定docker group 组用于pull拉取镜像
4、Docker仓库介绍
- hosted:本地仓库、通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库
- proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库
- group:仓库组,用来合并多个hosted、proxy仓库,当你的项目希望在多个reposistory使用资源时就不需要多次引用了,只需要用一个group接口。
5、创建一个角色专门用于push docker镜像
添加访问权限
- 菜单Security -> Realms把Docker Bearer Token Realm移到右边的框中保存。
- 添加用户规则:菜单Security -> Roles -> Create role 在Privlleges选项中搜索docker把相应的规则移到到右边的框中然后保存。
- 添加用户:菜单Security -> Users -> Create local user 在Roles选项中选中刚才创建的规则移动到右边的窗口保存。
5.1 、用户授权
点击Users 栏 可以进行创建用户,也可以点击用户进行授权
演示一下将刚才的docker权限教师 授权给 admin ,admin 默认拥有全部权限,但是测试的我不想创建用户,方法如此就OK了,没必要去闯将一个用户在来授权.
记住将 nx-admin勾选上
6、创建docker 仓库用户
用户名/密码
docker/docker@123!
7、接下来暴露8083端口、用于docker镜像的push
[root@node3 /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9fc01253fd99 registry.cn-hangzhou.aliyuncs.com/mindoc/mindoc:v2.0-beta.2 "./start.sh" 2 months ago Up 2 hours 0.0.0.0:8181->8181/tcp MinDoc_New 2c2ed16ea5cb redis "docker-entrypoint.s…" 3 months ago Up 2 hours 0.0.0.0:6379->6379/tcp redis 64c3ba778f49 sonatype/nexus3 "sh -c ${SONATYPE_DI…" 3 months ago Up 2 hours 0.0.0.0:8081-8083->8081-8083/tcp nexus3
8、修改docker daemon配置
配置 /etc/docker/daemon.json由于不是https,所以要在daemon.json中配置一下
vim /etc/docker/daemon.json
{ "registry-mirrors": ["http://mirrors.docker.company:8082"], "insecure-registries": [ "mirrors.docker.company:8082", "mirrors.docker.company:8083"], "graph": "/home/docker" }
insecure-registries:指定私库的地址 registry-mirrors:指定官网加速的地址 log-driver:指定docker的日志为json形式的 log-opts:指定日志为100M一个,最多一个文件 live-restore: 设置值为true时,将在重启docker的时候,docker正在运行的进行不重启
8.1、重新加载daemon配置并重启docker服务
systemctl daemon-reload && systemctl restart docker
9、配置完成,查看客户端目录情况
ls -al ~/
连接仓库
其他几区需要连接仓库才能进行push 、pull等操作,连接仓库前需要进行host域名配置
10、登陆仓库
docker login mirrors.docker.company:8083
11、登陆成功
#登录成功
注意:登录时,需要提供用户名和密码。认证的信息会被保存在~/.docker/config.json文件,在后续与私有镜像仓库交互时就可以被重用,而不需要每次都进行登录认证。
config.json 文件用于存储docker registry 的认证信息,cat /root/.docker/config.json
文件内容如下:
{ "auths": { "192.168.11.38:8082": { "auth": "YWRtaW46YWRtaW40NTcyODA=" }, "mirrors.docker.company:8083": { "auth": "ZG9ja2VyOnN6eXh3QDEyMyE=" } }, "HttpHeaders": { "User-Agent": "Docker-Client/18.03.1-ce (linux)" } }
config.json文件详解:
auth后面的内容其实是输入用户名和密码的加密后的输出,可以尝试加解密测试
解密
# xxx为上面加密后的值 [root@node3 ~]# echo -n "YWRtaW46YWRtaW40NTcyODA=" | base64 -d admin:admin457280 # 解密后的明文
加密
# 对比一下登录harbor的用户名:密码 加密后是否和~/.docker/config.json中auth的值对应 echo -n "user:password" | base64 [root@node3 ~]# echo -n 'docker:szyxw@123!' | base64 ZG9ja2VyOnN6eXh3QDEyMyE= # 加密后的密文
12、先打一个tag
docker tag nginx:latest mirrors.docker.company:8083/nginx:latest
13、上传一个镜像试试
docker push mirrors.docker.company:8083/nginx:latest
14、push上传成功
15、回到nexus控制中心管理界面查看上传镜像
[root@node3 .docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 2d389e545974 12 days ago 142MB mirrors.docker.company:8083/nginx latest 2d389e545974 12 days ago 142MB sonatype/nexus3 latest 589f7296a4a2 9 months ago 655MB redis latest 7614ae9453d1 9 months ago 113MB hello-world latest feb5d9fea6a5 12 months ago 13.3kB registry.cn-hangzhou.aliyuncs.com/mindoc/mindoc v2.0-beta.2 a563553bc0d2 3 years ago 506MB
16、搜索镜像
docker search mirrors.docker.company:8083/nginx
到此,使用nexus搭建的docker私有仓库配置完毕。公司常用的镜像可以存放在私有仓库里 毕竟官方的dockerhub太慢