中央仓库安装(Nexus)
搭建依赖 Docker Compose, 请按安装指南安装
使用 Docker Compose 安装
yaml
version: "3.9"
networks:
nexus:
external: true
name: violet
services:
nexus:
image: sonatype/nexus3
container_name: nexus3
restart: always
networks:
nexus:
ipv4_address: 192.168.1.16
volumes:
- ./data:/nexus-dataTIP
默认账号为 admin,初始密码在 ./data/auth.password nexus 默认端口是 8081, 这里没映射出去, 采用的是 nginx 反向代理去访问
Docker Hub 仓库搭建
创建储存位置
- 登录后进入管理页面的
Repository -> Blob Stores - 点击
Create Blob Store - 选择
Type为File,名称为docker-hub - 保存
创建 Docker Hub 代理仓库
- 进入管理页面
Repository -> Repositories - 点击
Create Repository - 选择
dockers(proxy) - 填写名称(创建后不可更改)
展开图片

- 允许任何用户拉取(可选,创建后可更改)
展开图片

- 设置代理位置(可更改)
展开图片

- 选择储存位置(选择之前创建的位置,创建后不可更改)
展开图片

- 最下面点击创建
创建 Docker Hub 聚合仓库
- 进入管理页面
Repository -> Repositories - 点击
Create Repository - 选择
dockers(group) - 填写名称(创建后不可更改)
展开图片

- 设置单独端口,不可与其他端口冲突,创建后可以更改
展开图片

- 允许任何人拉取
展开图片

- 存储位置(创建后不可更改)
展开图片

- 将 Docker Hub 代理加入其中
展开图片

- 最下面点击创建
配置匿名拉取 Token Realm
注意
不配置这个仓库无法被匿名拉取
- 进入管理页面
Security -> Realms - 激活
Docker Bearer Token Realms展开图片

配置 Nginx 代理
Tip
现在的 Docker Hub 还无法配置到 docker 客户端的镜像列表中
方案一
前提:已经配置好了 nexus 的 nginx 反向代理
步骤
假设配置的反向代理为将 mirrors.sdfok.cn 映射到 192.168.1.16:8081 上,现在只需要在配置中添加将 mirrors.sdfok.cn/v2 映射到 192.168.1.16:8082/v2 上即可,则可以将https://mirrors.sdfok.cn 配置到 docker 的镜像列表中,配置方法参考设置 DockerHub 镜像
方案二
步骤
新增加一个域名:docker.sdfok.cn,将这个域名直接反代到 192.168.1.16:8082,则可以将 https://docker.sdfok.cn 配置到 docker 的镜像列表中。
创建 Docker Hub 私服仓库
- 进入管理页面
Repository -> Repositories - 点击
Create Repository - 选择
dockers(hosted) - 填写名称(创建后不可更改)
- 设置单独端口,不可与其他端口冲突,创建后可以更改
- 允许任何人拉取
- 存储位置(创建后不可更改)
- 最下面点击创建
- 修改上面创建的聚合仓库,将私服也加入到聚合仓库
修改 Nginx 代理
TIP
由于聚合仓库只能拉取,不能推送,所以在 nginx 反代时需要判断是拉取还是推送,将请求代理到对应的端口上
对之前的代理配置,按下面的方式稍作修改即可
nginx
location / {
# 默认为docker推送端口
set $dockerport "80";
# 当为 GET 请求时,切换到docker拉取端口
if ($request_method ~* 'GET') {
set $dockerport "8082";
}
proxy_pass http://192.168.1.16:$dockerport;
include nginxconfig.io/proxy.conf;
}