下面的说法来源于网络
2024.06.06,上海交大的Docker Hub镜像加速器宣布因为监管要求被下架。
index服务器被DNS污染,导致无法拉取镜像。
做好全面脱钩的准备
自主知识产权的国产Docker将会横空出世
临时性管控(过段时间就恢复)
DockerHub 国内镜像解决方案
目前 DockerHub 仓库镜像服务基本都下线了, Docker 可以说是开发人员的必备工具,这个影响还是很大的。对老胡来说,不论是从个人还是技术团队,如何配置 DockerHub 镜像加速是个急需解决的问题。
- 第三方镜像加速
- 自建
2.1 基于 Cloudflare Workers 镜像代理
2.2 基于 Github Action 转存同步
2.3 购买服务器-自搭建
第三方镜像加速
加速地址 | 说明 |
---|---|
https://docker.m.daocloud.io | DaoCloud 驱动,可以去github 提需要的镜像同步 |
https://dockerpull.com | Docker Proxy 驱动 |
https://atomhub.openatom.cn | AtomHub 提供,仅有基础镜像 |
https://docker.1panel.live | 1panel 驱动 |
https://dockerhub.jobcher.com | 打工人日报驱动 |
https://hub.rat.dev | 耗子面板驱动 |
https://docker.registry.cyou | bestcfipas 驱动 |
https://docker.awsl9527.cn | zeruns 驱动 |
自建
通过vps
购买海外vps(最后对大陆路线进行优化的,可以直链访问),通过 distribution 搭建 docker-registry
version: "3"
services:
registry:
image: registry:2
container_name: registry
restart: unless-stopped
environment:
TZ: Asia/Shanghai
ports:
- 5000:5000
volumes:
- ./conf/config.yml:/etc/docker/registry/config.yml:ro
- ./data/registry:/var/lib/registry
networks:
nginx-net:
ipv4_address: 192.168.208.4
networks:
nginx-net:
external: true
- config.yml
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
proxy:
remoteurl: https://registry-1.docker.io
- nginx config
upstream docker-registry {
server 192.168.208.4:5000;
}
map $upstream_http_docker_distribution_api_version $docker_distribution_api_version {
'' 'registry/2.0';
}
server {
listen 80;
listen [::]:80;
listen 443 ssl;
listen [::]:443 ssl;
server_name xxxx;
access_log /var/log/nginx/fluentbit_docker_proxy_access.log;
#listen 127.0.0.1:5000 ssl http2 proxy_protocol;
# SSL
ssl_certificate /etc/nginx/cert/xxxx.pem;
ssl_certificate_key /etc/nginx/cert/xxxx.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
client_max_body_size 0;
chunked_transfer_encoding on;
location /v2/ {
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
return 404;
}
add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always;
proxy_pass http://docker-registry;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
这样你就可以通过 docker的 registry-mirrors镜像 加速访问构建
基于平台
基于 CF
搭建的话推荐:CF-Workers-docker.io
,部署方式支持 Workers
和 Pages
,教程在 README 中,讲得也很清楚。
使用 Github Action 推荐 tech-shrimp/docker_image_pusher
- 支持DockerHub, gcr.io, k8s.io, ghcr.io等任意仓库
- 支持最大40GB的大型镜像
- 使用阿里云的官方线路,速度快
使用
不论是用第三方还是自建,使用基本都是类似的:
# 通过域名使用
# 说明:library是一个特殊的命名空间,它代表的是官方镜像。如果是某个用户的镜像就把library替换为镜像的用户名
docker pull {domain}/library/alpine:latest
# 设置 registry mirror,推荐
tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://xxx.xxx"]
}
EOF
# 在里面填上代理域名即可,可以多个
systemctl daemon-reload
systemctl restart docker
其他
如果通过github action setup-buildx-action 去构建docker 镜像时发现无法 connect: connection refused
说明没有走 docker宿主配置的docker-mirror可以采取以下方式
name: Set Up Docker Buildx
uses: https://gitee.com/actions-mirror/docker-setup-buildx-action@v3
with:
config-inline: |
[registry."docker.io"]
mirrors = ["xxx.xxx"]