参考文章: 使用 Nexus3 配置 Docker 私有仓库
Nexus3 配置 Docker 私有仓库
配置 blob 存储
登录 Nexus 中央仓库,依次点击左侧任务栏
Repository
–>Blob Stores
,在右边窗口选择Create blob store
,如下图:
在创建 blob 界面,选择
Type
为File
,blob 名称输入habor-blob
。然后点击Create blob store
。这个名字可以自己随意写,稍后创建仓库时需要选择这个 blob 存储;如下图所示
创建 Repository
创建 Docker 本地仓库,点击左侧任务栏,选择
Repositories
,然后在右侧窗口点击Create repository
。选择docker(hosted)
,然后再接下来的界面中选择性输入以下配置:- Name: docker-local
- Online: 勾选
- Repository Connectors: 勾选 HTTP,输入端口 8083;
- Docker Registry API Support: 勾选 Enable Docker V1 API;
- Storage: 选择刚创建的 habor-blob;
- Deployment policy: 选择默认的 Allow redeploy;
其他不变,默认即可。设置完后,应该如下图所示
创建 Docker 代理仓库,点击左侧任务栏,选择
Repositories
,然后在右侧窗口点击Create repository
。选择docker(proxy)
,然后再接下来的界面中选择性输入以下配置:- Name: docker-proxy;
- Online: 勾选;
- Repository Connectors: 不勾选,默认即可;
- Docker Registry API Support: 勾选 Enable Docker V1 API;
- Proxy: 输入 阿里云加速镜像地址
https://b9pmyelo.mirror.aliyuncs.com
; - Docker index: 选择
Use Docker Hub
; - Auto blocking enabled: 勾选;
- Storage: 选择刚创建的 habor-blob;
其他不变,默认即可。设置完成后,应该如下图所示
创建 Docker 仓库组,点击左侧任务栏,选择
Repositories
,然后在右侧窗口点击Create repository
。选择docker(group)
,然后再接下来的界面中选择性输入以下配置:- Name: docker-group
- Repository Connectors: 勾选 HTTP,输入端口 8082;
- Docker Registry API Support: 勾选 Enable Docker V1 API;
- Storage: 选择刚创建的 habor-blob;
- Group:将左侧 Available 中的仓库添加到右侧 Members 中;
其他不变,默认即可,设置完成后,应该如下图所示
到这里,Nexus 中对 Docker 仓库的配置已经完成,接下来配置 Nginx 反向代理访问 docker 仓库
配置 Nginx 反向代理
在部署 Nginx 部分,需要先生成自签名 SSL 证书,因为后面不想在 docker pull
的时候还要带一个端口!
- docker 仓库域名: habor.59izt.com
生成证书
这里推荐一个一键生成工具:ssl 一键生成工具地址,使用方法请参考作者说明。
创建证书方式如下:
1 | // 下载工具 |
拷贝证书
1 | // 拷贝 Nginx 证书 |
配置 Nginx
1 | upstream nexus_docker_get { |
使用 nginx -t
命令检查配置文件,如果没有问题,就可以启动 Nginx 服务了。
配置 Docker
由于使用的是自己生成的证书,所以需要在 Docker 配置文件 daemon.json
中添加 insecure-registries
配置,如下
1 | { |
重启 Docker 守护进程
1 | systemctl restart docker |
测试
测试登录私有仓库
1
2
3
4
5
6
7
8# docker login habor.59izt.com
Username: admin
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded测试上传镜像到私有仓库
1
2
3
4
5// 给镜像打标签
# docker tag nginx:latest habor.59izt.com/nginx:latest
// 上传镜像
# docker push habor.59izt.com/nginx:latest测试从私有仓库下载镜像
1
docker pull habor.59izt.com/nginx:latest
登录 Nexus 中央仓库,查看刚上传的镜像,如下图所示
测试能否匿名拉取私有镜像
1
2
3
4
5
6
7// 登出私有仓库
# docker logout habor.59izt.com
Removing login credentials for habor.59izt.com
// 再次尝试拉取
# docker pull habor.59izt.com/nginx:latest
Error response from daemon: Get http://habor.59izt.com/v2/nginx/manifests/latest: no basic auth credentials