京东云ECS实例中修改Docker镜像源的完整步骤有哪些?

在京东云 ECS(弹性云服务器)上修改 Docker 镜像源,核心逻辑与在普通 Linux 服务器上操作一致。由于京东云 ECS 通常基于 CentOS、Ubuntu 或 Alibaba Cloud Linux 等主流发行版,以下提供适用于大多数场景的通用完整步骤

前置准备

确保你拥有 ECS 实例的 SSH 登录权限(root 用户或 sudo 权限),并且网络能够访问网络。


第一步:选择并配置国内镜像源

目前最稳定、速度最快的国内 Docker 镜像源通常是 阿里云 (Aliyun)腾讯云 (Tencent Cloud)。这里以阿里云为例(其他源只需替换 URL 即可)。

1. 创建或编辑配置文件

Docker 的镜像源配置位于 /etc/docker/daemon.json 文件中。如果该文件不存在,需要新建;如果存在,请备份后编辑。

sudo vi /etc/docker/daemon.json

2. 写入配置内容

将以下内容粘贴到文件中。注意:如果是首次创建,直接写入;如果已有配置,请在 registry-mirrors 数组中添加你的地址,同时建议添加 insecure-registriesdns 以防止部分问题。

推荐配置(阿里云):

{
  "registry-mirrors": [
    "https://docker.mirrors.aliyun.com"
  ],
  "insecure-registries": [],
  "dns": ["8.8.8.8", "114.114.114.114"]
}

注:如果你使用的是腾讯云镜像源,请将 URL 改为 https://mirror.ccs.tencentyun.com

⚠️ 注意事项:JSON 格式对逗号 , 非常敏感。如果是修改现有文件,确保新加的 URL 后面有逗号(最后一个元素后无逗号),且大括号 {} 成对闭合,否则会导致 Docker 启动失败。

3. 验证文件格式(可选但推荐)

防止语法错误导致服务无法启动,可以使用 pythonjq 简单校验 JSON 格式:

python3 -m json.tool /etc/docker/daemon.json

如果没有报错输出,说明格式正确。


第二步:重启 Docker 服务

修改配置文件后,必须重载守护进程才能生效。

# 重新加载 systemd 配置(如果 systemctl 未自动识别)
sudo systemctl daemon-reload

# 重启 Docker 服务
sudo systemctl restart docker

# 检查状态,确保服务正常运行
sudo systemctl status docker

如果看到 Active: active (running),说明重启成功。


第三步:验证镜像源是否生效

通过拉取一个公开的小镜像来测试下载速度。

docker pull hello-world
  • 成功标志:下载速度明显提升(通常在几 MB/s 以上),且能顺利拉取完成。
  • 失败标志:如果提示 timeout 或连接超时,说明配置未生效或网络不通,需检查防火墙或 DNS 设置。

第四步:特殊情况处理(京东云专属优化)

在某些特定场景下,可能需要额外的优化步骤:

  1. 安全组策略检查
    登录京东云控制台,进入该 ECS 实例的安全组规则。确保出方向(Outbound)允许访问 HTTPS (443) 端口,否则无法连接镜像源。

  2. DNS 解析优化
    如果上述步骤完成后拉取依然慢,可能是 DNS 解析问题。可以在 /etc/resolv.conf 中手动指定国内 DNS(如阿里 DNS 223.5.5.5 或腾讯 DNS 119.29.29.29):

    echo "nameserver 223.5.5.5" | sudo tee /etc/resolv.conf
  3. 使用 crictl 替代(针对容器运行时)
    如果你的 ECS 环境使用了 Kubernetes 或特定的容器运行时(如 containerd),除了 docker 命令外,可能还需要修改 /etc/containerd/config.toml 中的 mirrors 配置。

    对于 containerd,编辑文件:

    sudo vi /etc/containerd/config.toml

    找到 [plugins."io.containerd.grpc.v1.cri".registry] 部分,修改 mirrors 字段:

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
        endpoint = ["https://docker.mirrors.aliyun.com"]

    然后重启服务:sudo systemctl restart containerd

总结

修改京东云 ECS Docker 镜像源的核心流程为:编辑 /etc/docker/daemon.json -> 写入国内源地址 -> 重启 Docker 服务 -> 验证拉取速度。只要遵循此流程,即可解决镜像拉取慢的问题。