0、前提
(1)拥有一台海外公有云服务器,根据自己能承受的成本,带宽尽可能大些,这样拉取镜像时能快些。
(2)web代理服务器为treafik,这个根据自己熟悉的来即可,如果用nginx,调整部署配置即可。
(3)准备一个域名以及SSL证书。docker镜像源默认https。下面配置的docker.xxx.work是我的域名。
说明:下面配置的路径,都是根据自己实际去配置和调整。
1、git仓库
2、源码构建镜像
在服务器上构建即可。
docker build -t crproxy:v0.12.2 .
3、Traefik 配置
文件/opt/websrv/config/traefik/config/crproxy.yaml 。(我的treafik.yaml文件路径为/opt/websrv/config/traefik/traefik.yaml)
http:
routers:
# docker registry crproxy服务
# https://github.com/DaoCloud/crproxy
dockerhub-registry:
entryPoints:
- "https"
service: "dockerhub-registry-service" # 对应 services 节点的服务
rule: "Host(`docker.xxx.work`)"
priority: 42
tls:
domains:
- main: "docker.xxx.work"
sans:
- "docker.xxx.work"
# middlewares:
# - "traefik-auth"
services:
dockerhub-registry-service:
loadBalancer:
servers:
- url: "http://dockerhub-registry:8080"
tls:
certificates:
- certFile: /opt/websrv/config/certs/docker.xxx.work_bundle.pem
keyFile: /opt/websrv/config/certs/docker.xxx.work.key
stores:
- default
4、docker-compose
default-registry,我配置为mirror.ccs.tencentyun.com,是因为我的服务器是国内腾讯云服务器,没有海外服务器,mirror.ccs.tencentyun.com是腾讯云的dokcer镜像源加速的内网地址。
services:
dockerhub-registry:
image: crproxy:v0.12.2
container_name: dockerhub-registry
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.docker.network=network-traefik
#ports:
#- 80:8080
#- 443:8080
command: |
--acme-cache-dir=/tmp/acme
--acme-hosts=*
--default-registry=mirror.ccs.tencentyun.com
tmpfs:
- /tmp/acme
networks:
- traefik-webgateway
networks:
traefik-webgateway:
name: network-traefik
external: true
然后docker compose up -d。
5、使用
vim /etc/docker/daemon.json
{
"registry-mirrors":[
"https://docker.xxx.work"
]
}
然后
systemctl daemon-reload
systemctl restart docker
完成。