由于众所周知的原因,Docker Hub 在中国大陆被禁止了。
本文搭建了一个公共 Docker Hub 镜像源。如果实在懒得自建的话,文末我会附上自己的镜像源供公开使用,但请不要滥用

安装 Nexus

找一个目录,把 docker-compose.yml 丢进去。
下文使用 /opt/nexus 代替本目录。

mkdir -p /opt/nexus
mkdir -p /opt/nexus/nexus-data
vim /opt/nexus/docker-compose.yml
version: "3.8"
services:
  nexus:
    image: sonatype/nexus3
    container_name: nexus
    restart: always
    environment:
      INSTALL4J_ADD_VM_PARAMS: -Xms4G -Xmx8G -XX:MaxDirectMemorySize=4G #视实际情况调整
    ports:
      - 8081:8081
      - 8082:8082
    volumes:
      - /opt/nexus/nexus-data:/nexus-data
docker compose up -d

等待几分钟后,获取初始密码。

docker exec nexus cat /nexus-data/admin.password

为 Docker Hub 添加 Docker Proxy Repository

登录进去后,默认要求你修改密码。
完成后来到 Administration-Repository-Repositories 页面。

创建代理仓库

新建一个仓库,选择 docker (proxy)
在 Name 这里填入当前仓库的命名,例如 docker-proxy-dockerhub
Proxy - Remote storage 这里,配置 Docker Hub 代理时填入 https://registry-1.docker.io,配置 K8s 仓库时填入 https://k8s.gcr.io,配置 quay.io 仓库时填入 https://quay.io
Proxy - Docker Index 这里,配置 Docker Hub 代理时选择 Use Docker Hub,配置其他仓库代理时选择 Use proxy registry(specified above)
去掉 Proxy - Auto blocking enabled 这里的对勾。
去掉 Negative Cache - Not found cache enabled 这里的对勾。
可选只创建第一个重复操作,创建完成 3 个仓库:docker-proxy-dockerhubdocker-proxy-k8sgcrdocker-proxy-quayio

创建聚合仓库

[Repository] - [Repositories] 中创建新仓库,类型为 docker (group)
Name 这里填入当前仓库的命名,例如 docker-proxy-group
Repository Connectors 这里,勾选 HTTP 并填入一个未被占用的端口,必须与创建容器时映射的端口号一致。这里我使用 8002。
Group - Member repositorles 这里,将需要整合的仓库添加到右边,并按先后顺序排好。

配置 Docker 认证

Security - Realms 选项中,将 Docker Bearer Token Realm 添加到右边,保存即可。

配置 HTTPS

略,有些时候饭不能喂到嘴里,否则就没味道了。

我的公开镜像

镜像源:https://hub.20220303.xyz/禁止滥用!禁止滥用!禁止滥用!

最后修改:2024 年 06 月 07 日
如果觉得我的文章对你有用,请随意赞赏