Ubuntu Docker 配置镜像加速:网易等旧源的替换与验证

2026-09-10 资料核对:中科大官方帮助页已说明镜像缓存服务关闭;阿里云公告对加速器的使用环境与可拉取范围作出限制。本文不再将旧公共地址列表当作当前可用清单。以下配置须使用你已确认可用且信任的服务,本次未在你的目标网络完成镜像拉取实测。

原文使用网易等公共镜像地址配置 Ubuntu Docker。旧地址的当前可用性不能由多年以前的教程保证,因此本次更新保留原网址,改为介绍如何替换旧源、验证守护进程配置并安全回退。

先分清镜像源解决哪一层问题

Docker Hub 镜像加速、Docker 软件安装源、容器内的软件包源,是三种不同配置。registry-mirrors 用于 Docker Engine 拉取 Docker Hub 镜像时的镜像服务,不会自动解决其他仓库、GitHub 下载或构建步骤中的网络问题。

一份能解析的 JSON 不代表镜像服务可用;docker info 显示地址也只说明守护进程读取了配置。镜像内容是否齐全、标签是否更新、你的网络和账户是否获准使用,仍需分别确认。

1. 确认运行的是哪个 Docker 服务

docker context show
docker version
docker info

以下步骤仅针对 Ubuntu 上使用 systemd 的 rootful Docker Engine。Rootless Docker 和 Docker Desktop 的配置位置不同,不能直接套用。

2. 备份并编辑配置

先检查 /etc/docker/daemon.json 是否存在;存在时保存一份备份,再使用编辑器修改。若该文件尚不存在,创建目录和配置文件时应核对服务的实际启动参数。不要用重定向命令覆盖已有配置。

sudo cp -a /etc/docker/daemon.json /etc/docker/daemon.json.before-mirror-change
sudoedit /etc/docker/daemon.json

备份命令仅用于原文件存在的情况,且备份文件名应选择尚未使用的名称。

{
  "registry-mirrors": [
    "https://your-authorized-mirror.example.com"
  ]
}

上面的 example.com 地址是格式占位符,不能直接使用。请替换为你获准使用的真实 HTTPS 地址;将字段合并进原有 JSON,保留其他配置并避免重复键。

3. 验证语法与重启

python3 -m json.tool /etc/docker/daemon.json
sudo dockerd --validate --config-file=/etc/docker/daemon.json

较旧 Docker 版本可能没有 --validate 选项,应先查看本机帮助。JSON 语法检查也不能发现所有守护进程参数冲突。验证通过并确认服务中断可接受后,再执行重启:

sudo systemctl restart docker
sudo systemctl --no-pager --full status docker

验证、排错与回退

docker info --format "{{json .RegistryConfig.Mirrors}}"
docker pull hello-world:latest
docker image inspect hello-world:latest --format "{{json .RepoDigests}}"

第二步只拉取镜像,不会运行容器。记录时间、Docker 版本和错误信息。镜像可能已经存在于本地,成功也可能来自上游回退,因此单凭一次成功不能证明某个镜像站的速度或命中情况。

  • 配置后无法启动:先检查 JSON 语法,恢复修改前的配置。
  • 超时或名称解析失败:分别排查服务地址、DNS、守护进程代理与网络。
  • unauthorized / denied:确认服务授权、登录方式和镜像范围。
  • manifest unknown:核对仓库名、标签和平台支持;不要仅靠反复换源解决。

如需撤销,只撤回本次添加或修改的镜像配置,再重新应用。不要清空所有镜像、容器或卷作为常规排错方式。

参考资料

继续阅读

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注