前言
为什么需要自建Registry?
自建Docker Registry的主要目的是为了解决Docker Hub无法访问,从而无法拉取镜像的问题。国内提供的加速源或者镜像站良莠不齐,且很多大站已经停止维护且无法访问,因此自建Registry是解决镜像问题的方案之一。
准备
- 海外VPS主机/应用服务器;
- 域名(可选);
- registry、caddy的compose.yaml及caddy配置文件;
docker-compose.yaml
# docker-compose.yml
version: '3.8'
services:
# Caddy 反向代理
caddy:
image: caddy:2-alpine
container_name: registry-caddy
ports:
- "80:80" # HTTP 端口(用于 ACME 挑战)
- "443:443" # HTTPS 端口
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./caddy/data:/data
- ./caddy/config:/config
- ./caddy/logs:/var/log/caddy
environment:
- CADDY_DOMAIN=registry.seamory.com
networks:
- registry-net
restart: unless-stopped
registry:
image: registry:2
container_name: mirror-registry
#ports:
# - "5000:5000"
environment:
# 上游docker hub地址
REGISTRY_PROXY_REMOTEURL: https://index.docker.io
# 保存路径;
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
# 启用缓存;
CACHE_SIZE: "20gb"
CACHE_TTL: "30d"
# 建议对registry启用访问鉴权,否则任何人都可以通过该registry地址下载docker镜像;
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
volumes:
- ./registry-data:/data
- ./auth:/auth
networks:
- registry-net
restart: unless-stopped
networks:
registry-net:
driver: bridge
Caddyfile
# Caddyfile
# 替换 your-domain.com 为你的实际域名
registry.seamory.com {
# 如果没有域名,则启用ip自签发证书
# tls internal
# 反向代理到 Registry
reverse_proxy registry:5000
# 可选:添加日志
log {
output file /var/log/caddy/registry.log
}
}
# 可选:添加重定向(HTTP -> HTTPS)
#registry.seamory.com {
# redir https://registry.seamory.com{uri}
#}
步骤
1. 配置防火墙。
2. 安装Docker CE。
3. 创建并进入/opt/docker/registry目录,并在该目录中创建registry-compose.yaml以及Caddyfile
为什么需要Caddy?默认的Docker只会请求https协议的registry地址,否则需要修改daemon.json。Caddy可以默认为registry生成https所需要的证书,如果有自己的证书,可以不适用Caddy直接在registry的compose配置中添加自己的证书。
4. 在目录中执行docker compose -f registry-compose.yaml up -d运行regsitry和caddy。
5. 浏览器中输入https://<your-domain.com>/v2,检查是否能正常访问,应该会返回一个空对象:{};
6. 直接使用<your-domain.com>/<镜像>:<版本>进行镜像拉取,镜像和版本可以在docker hub中查询,拉取完成后,通过https://<your-domain.com>/v2可以看到已经缓存的镜像信息。如果配置了鉴权,则需要先执行docker login <your-domain.com>登录;
DISCUSSION
评论
还没有公开评论,欢迎留下想法。