# 前情提要
2024 年 6 月 6 日,国内众多公益镜像站点 “接上级主管部门通知,暂时关闭 Docker Hub 镜像缓存服务 “,而 docker.com 及其相关域名在很早之前就因不可描述的原因无法访问,突然之间中国的 docker 用户陷入了一个无镜像可用的尴尬境地。
本人使用的 docker 镜像有限,虽然很早就看到了新闻,但未曾当回事,直到某天要部署一个新服务时,突然发现 docker pull 半天都拉不下了镜像了,这才后知后觉的意识到了问题的严重性。
# 解决方案
通过一番搜素和尝试,解决方案有如下几种:
# 第三方镜像加速
第三方镜像加速是最简单的解决方案,在之前国内拉取镜像缓慢时就广泛采用,但现在的前提是你能找到还能正常提供服务的第三方镜像站点。
sudo mkdir -p /etc/docker | |
sudo tee /etc/docker/daemon.json <<-'EOF' | |
{ | |
"registry-mirrors": [ | |
"https://dockerhub.icu", | |
"https://docker.awsl9527.cn" | |
] | |
} | |
EOF | |
sudo systemctl daemon-reload | |
sudo systemctl restart docker |
各大高校的镜像站基本都不再提供 Docker Hub 的镜像服务了,上述两个站点都是个人用户搭建,能活到什么时候也未可知。
有阿里云账号的,可以配置阿里云加速器 (点击管理控制台 -> 登录账号 -> 左侧镜像工具 -> 镜像加速器 -> 复制加速器地址), 但阿里云的很多镜像并不是最新的😅
此方法需要重启 docker 服务,如果是在生产环境需要慎重操作。
这里有一份热心网友整理的 第三方镜像服务列表,请自行测试使用。
# 阿里云私有仓库
使用 Github Action 将国外的 Docker 镜像转存到阿里云私有仓库,供国内服务器使用,简单易用,详细步骤参见 项目介绍
# Cloudflare 镜像代理
基于 Cloudflare Workers, 中转对 Docker 官方镜像仓库的请求,解决一些访问限制和加速访问的问题,详细步骤参见 项目介绍
# 自建私有仓库
如果对 docker 镜像有安全性需求,或者只能在内网运行,那就必要搭建一套 docker 本地私有镜像仓库。
搭建镜像仓库主流的有两种方法,一种是使用 docker 官方提供的 registry 镜像搭建仓库,简单快捷,但是功能有限;另一种是使用 harbor 搭建本地镜像仓库,harbor 功能更强,使用范围更广。harbor 详细步骤参见 利用 harbor 自建企业级 Docker 镜像仓库
# 后记
目前本人只尝试了这几种方式,如果平常使用的镜像不多,推荐使用阿里云私有仓库的方式,转存完成后再拉取使用的速度就飞快了,当然最保险的方式还是通过 harbor 自己私有仓库,自己的镜像自己说了算。
最后也感叹一下,在网络环境监管日趋严格的今天,只能哀开发者之多艰,真是不会十八般武艺就没法开发了,这次是 docker hub,下一次又会是什么呢?