Docker 配置镜像源

资源

可用 Docker Hub 镜像加速器列表见 Docker Hub 镜像加速器

修改方式

网络上有不少教程是先修改 /etc/docker/daemon.json,然后:

sudo systemctl daemon-reload
sudo systemctl restart docker

但是这样需要重启 Docker。虽然可以先给 Docker 加上 live-store 属性,但是我也不敢冒这个风险。

查了相关资料之后我发现:让 docker 重新加载配置只需要向其发送一个信号。如果是用 systemctl 管理 docker,可以直接这样做(参考这篇文章):

sudo systemctl reload docker

然后用 docker info 看是否成功即可。

Tip

daemon-reload 只是让 systemctl 重新加载 /lib/systemd/system/*.service 中的配置文件而已,这样 restart / reload / stop / start 等功能的含义才会发生变化,在这个例子里面,我们只是修改了 docker 自己的配置文件,并没有修改 docker 的运作方式,因此不需要让 systemctl 重新加载配置。

不过到这里还没有结束,还得禁用 BuildKit,见下面一节。

BuildKit 不读取镜像源

网上也有很多人反映这一点,比如 https://github.com/moby/buildkit/issues/606

可以通过禁用 BuildKit 来解决:

sudo DOCKER_BUILDKIT=0 docker <其他参数...>

我是这样才能最终完成下载的。另外,使用 BuildKit 就不用给 docker 命令 root 权限,不用 BuildKit 就要给 root 权限,应该是两者的运行方式不同。