马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在服务器上用 Docker 拉镜像,最常遇到的问题不是"命令不会敲",而是那个熟悉的错误:镜像拉取超时、connection refused、或者卡在 pulling fs layer 半天不动。绝大多数情况是拉不到 Docker Hub。解决办法是在 /etc/docker/daemon.json 里配置镜像加速源,改完重载配置并重启 Docker 即可。
先确认 Docker 是正常工作的
动手改配置之前,先排除"Docker 本身根本没起来"的情况:
sudo systemctl status docker
docker version
如果 docker version 能正常打印出客户端和服务端版本,说明服务没问题,卡在拉取上就是网络/镜像源的事。
镜像加速配置怎么写
编辑(不存在就新建)/etc/docker/daemon.json:
sudo vim /etc/docker/daemon.json
配置文件是严格的 JSON 格式,注意不要有多余的逗号、不要用注释。内容形状如下:
{
"registry-mirrors": [
"https://你的镜像源地址"
]
}
写上镜像站地址之后,Docker 的 pull 会先问镜像站要,镜像站没缓存才回源站。国内网络环境下这一步能省掉大量超时。多个镜像源可以并列写在数组里,Docker 会依次尝试。
改完必须做两件事
只改文件不重启,配置不会生效。按顺序执行:
# 1. 重新加载 systemd 配置
sudo systemctl daemon-reload
# 2. 重启 Docker 服务
sudo systemctl restart docker
第二步不能省——daemon.json 是 Docker 守护进程启动时读的,热重载不认文件变更。
怎么验证加速真的生效了
别只看到"重启成功"就收工,用下面这条看 Docker 已经拿到了镜像源配置:
docker info | grep -A 5 Registry Mirrors
能看到你配进去的镜像站地址,说明配置被读到了。然后再实测拉一个小镜像:
docker pull hello-world
速度明显变快、能打印出结果,整条链路就通了。如果 docker info 里那一段是空的,说明 daemon.json 解析失败了(多半是 JSON 格式问题),Docker 会照旧启动但镜像源等于没配。
几个常见踩坑
- JSON 写错导致 Docker 起不来。改完先跑一遍格式校验,再重启服务。
- 镜像源本身已经下线。镜像站会调整地址,报 404 或超时就换一个,不需要纠结原来的。多个源并存时,Docker 会自动跳过不可用的那几个。
- 只配了加速源,代理没配。如果你的网络还要走代理,那是另一组配置(
/etc/systemd/system/docker.service.d/),和镜像源不是一回事。
- 重启后拉取仍然慢。先
docker pull 镜像名 时把镜像的完整 tag 写全(带仓库前缀和版本),默认拉 latest 有时命中不了你的预期。
关于第三方加速器
网上流传的各种"加速器地址"大多是云厂商提供的公共服务或者个人维护的镜像转发。用之前想清楚三件事:
- 它会不会留存你的镜像?企业内部镜像推上去走第三方转发,等于出网,合规上要评估。
- 它还活着吗?这类地址随时会被关停,今天能用不代表明天能用。
- 有没有更稳妥的替代?生产环境如果拉取频繁,更建议在内网自建一处镜像仓库(Harbor 之类),把外网镜像同步进来后全走内网地址,既不依赖外部加速器,速度也更可控。
另外提醒一句:有些教程会把加速器地址和登录信息写在配置文件里长期不换,这类凭据最好定期清理,避免被复用。
qidao123.com企服评测-应用市场 编辑提示
本文由齐道123 IT 运维社区整理,说明 Docker 拉取镜像失败时通过镜像加速配置排障的通用流程。文中命令请在自己拥有或已获授权的目标主机上执行;配置镜像源意味着经由第三方地址转发出网,涉及企业内部镜像资产时请先完成合规评估,谨慎使用来路不明的公共加速器。生产环境建议自建镜像仓库替代外部加速器,并定期清理配置文件中的临时凭据。
|