加速器

Docker官方加速器

官网地址:https://www.docker-cn.com/registry-mirror

Docker 中国官方镜像加速可通过 registry.docker-cn.com 访问。该镜像库只包含流行的公有镜像。私有镜像仍需要从美国镜像库中拉取。

手动拉取

使用以下命令直接从该镜像加速地址进行拉取:

docker pull registry.docker-cn.com/myname/myrepo:mytag

docker pull registry.docker-cn.com/library/ubuntu:16.04

注: 除非修改了 Docker 守护进程的 --registry-mirror 参数 (见下文), 否则需要完整地指定官方镜像的名称。例如,library/ubuntu、library/redis、library/nginx。

参数配置

使用 --registry-mirror配置 Docker 守护进程默认使用 Docker 官方镜像加速。这样可以默认通过官方镜像加速拉取镜像,而无需在每次拉取时指定 registry.docker-cn.com

  1. 可以在 Docker 守护进程启动时传入 --registry-mirror 参数: bash docker --registry-mirror=https://registry.docker-cn.com daemon
  2. 为了永久性保留更改,修改 /etc/docker/daemon.json文件并添加上 registry-mirrors 键值。 json { "registry-mirrors": ["https://registry.docker-cn.com"] }

注: 可以使用适用于 Mac 的 Docker 和适用于 Windows 的 Docker 来进行设置。

  1. 或者修改这里:(保证服务已经enable)

    sudo vim /etc/systemd/system/multi-user.target.wants/docker.service
    # 在行尾添加这些信息
    ExecStart=/usr/bin/dockerd --registry-mirror=https://registry.docker-cn.com

修改保存后重启 Docker 以使配置生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

docker进程重启或升级,容器是否会被重启

在 1.12 以前的版本确实如此,但是从 1.12 开始,Docker 引擎加入了 --live-restore 参数,使用该参数可以避免引擎升级重启导致容器停止服务的情况

默认情况该功能不会被启动,如需启动,需要配置 docker 服务配置文件。比如 Ubuntu 16.04 这类 systemd 的系统,可以修改 /etc/systemd/system/multi-user.target.wants/docker.service 文件,在 ExecStart= 后面配置上 --live-restore,如下所示:

ExecStart=/usr/bin/dockerd \
    --registry-mirror=https://registry.docker-cn.com \
    --live-restore

需要注意的是,--live-restoreSwarm Mode 不兼容,所以在集群环境中不要使用。实际上集群环境也不用担心某个服务器重启的问题,因为其上的服务都会被调度到别的节点上,因此服务并不会被中断。

执行命令,查看是否生效:

docker info

阿里加速器

阿里云容器Hub服务提供了官方的镜像站点加速官方镜像的下载速度。

使用镜像加速器

在不同的系统下面,配置加速器的方式有一些不同,所以我们介绍主要的几个操作系统的配置方法。

关于加速器的地址,你只需要登录容器Hub服务的控制台,左侧的加速器帮助页面就会显示为你独立分配的加速地址。

具体配置

当你下载安装的Docker Version不低于1.10时,建议直接通过daemon config进行配置。 使用配置文件 /etc/docker/daemon.json(没有时新建该文件)

{
    "registry-mirrors": ["<your accelerate address>"]
}
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

重启Docker Daemon就可以了。

上次修改: 14 April 2020