Docker 配置镜像源后无需重启服务并生效

Yami
2026年10月22日
6

在使用 Docker 时,由于网络环境的原因,我们往往需要配置国内镜像加速器(Registry Mirrors)来加速拉取镜像。通常修改配置后需要重启 Docker 服务,但这会导致正在运行的容器中断。

1. 编辑配置文件

首先,编辑 Docker 的守护进程配置文件 /etc/docker/daemon.json。如果文件不存在,可以直接创建。

sudo vi /etc/docker/daemon.json

在文件中添加或修改 registry-mirrors 字段。以下是一个配置示例(使用了 hub.docker.com 作为示例源):

# "live-restore": true 是一个非常有用的配置,它允许在 Docker 守护进程停止或重启时,容器依然保持运行状态。
{
  "registry-mirrors": [
    "https://hub.docker.com/"
  ],
  "live-restore": true

}

2. 验证配置语法

sudo dockerd --config-file /etc/docker/daemon.json --validate

如果输出 configuration OK,说明文件格式无误。

3. 重载配置(不重启服务)

配置修改完成后,我们不需要执行 systemctl restart docker,而是使用 reload 命令来平滑加载新配置:

sudo systemctl reload docker

4. 验证镜像源是否生效

重载完成后,通过 docker info 命令检查当前的镜像源配置是否已更新:

docker info | grep -A 5 "Registry Mirrors"

# 预期输出:

Registry Mirrors:
 https://hub.docker.com/
Live Restore Enabled: true

如果能看到你配置的地址,说明操作成功。

5. 测试拉取镜像

现在,你可以尝试拉取官方镜像来测试速度:

docker pull nginx:latest

备选方案: 使用临时镜像源

如果你无法修改配置文件,或者不想重载服务,可以在拉取命令中直接指定镜像源地址:

docker pull hub.docker.com/library/nginx:latest

1. 编辑配置文件

首先,编辑 Docker 的守护进程配置文件 /etc/docker/daemon.json。如果文件不存在,可以直接创建。

sudo vi /etc/docker/daemon.json

在文件中添加或修改 registry-mirrors 字段。以下是一个配置示例(使用了 hub.docker.com 作为示例源):

# "live-restore": true 是一个非常有用的配置,它允许在 Docker 守护进程停止或重启时,容器依然保持运行状态。
{
  "registry-mirrors": [
    "https://hub.docker.com/"
  ],
  "live-restore": true

}

2. 验证配置语法

sudo dockerd --config-file /etc/docker/daemon.json --validate

如果输出 configuration OK,说明文件格式无误。

3. 重载配置(不重启服务)

配置修改完成后,我们不需要执行 systemctl restart docker,而是使用 reload 命令来平滑加载新配置:

sudo systemctl reload docker

4. 验证镜像源是否生效

重载完成后,通过 docker info 命令检查当前的镜像源配置是否已更新:

docker info | grep -A 5 "Registry Mirrors"

# 预期输出:

Registry Mirrors:
 https://hub.docker.com/
Live Restore Enabled: true

如果能看到你配置的地址,说明操作成功。

5. 测试拉取镜像

现在,你可以尝试拉取官方镜像来测试速度:

docker pull nginx:latest

备选方案: 使用临时镜像源

如果你无法修改配置文件,或者不想重载服务,可以在拉取命令中直接指定镜像源地址:

docker pull hub.docker.com/library/nginx:latest

加载中...