官方镜像加速

由于运营商网络原因,会导致您拉取Docker Hub镜像变慢,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像加速器,从而加速官方镜像的下载。

重要
  • ACR镜像加速目前已停止同步最新镜像,如遭遇镜像无法拉取,或使用latest标签拉取到的镜像不为最新版本的情况,建议使用下列替代方案:

  • 镜像加速器是面向个人开发者的服务,仅限于支持个人开发场景,不允许有再次封装或商业用途。

  • 面向生产环境使用场景,为避免Docker访问网络问题导致的镜像拉取失败,建议您在生产环境中慎重考虑对Docker Hub容器镜像的依赖。

步骤一:获取镜像加速器地址

ACR会为每一个账号(阿里云账号或RAM用户)生成一个镜像加速器地址,配置镜像加速器前,您需要获取镜像加速器地址。

  1. 登录容器镜像服务控制台

  2. 在左侧导航栏选择镜像工具 > 镜像加速器

  3. 镜像加速器页面获取加速器地址

步骤二:配置镜像加速器

DockerContainerd的镜像加速器配置方法有所不同。您可以根据具体情况选择合适的配置方式。

配置Docker运行时镜像加速器

您可以先使用docker --version查看Docker的版本,然后根据实际情况选择不同的配置方式。

新版本Docker(1.10及以上)

创建并编辑/etc/docker/daemon.json文件(如果文件不存在,则创建):

{
    "registry-mirrors": ["<镜像加速器地址>"]
}            

然后重启Docker Daemon。

旧版本Docker

您需要根据不同的操作系统修改对应的配置文件。

  • Ubuntu 12.04 - 14.04

    Ubuntu的配置文件的位置在/etc/default/docker目录下。您只需要在这个配置文件中添加加速器的配置项,重启Docker即可。

    echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=<your accelerate address>\"" | sudo tee -a /etc/default/docker
    sudo service docker restart            
  • Ubuntu 15.04 - 15.10

    Ubuntu的配置文件的位置在/etc/systemd/system/docker.service.d/目录下。在这个目录下创建任意的*.conf文件即可作为配置文件。然后在这个配置文件中添加加速器的配置项,之后重启Docker即可。

    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo tee /etc/systemd/system/docker.service.d/mirror.conf <<-'EOF'
    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=<your accelerate address>
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker            
  • CentOS 7

    CentOS的配置方式略微复杂,需要先将默认的配置文件(/lib/systemd/system/docker.service)复制到/etc/systemd/system/docker.service。然后再将加速器地址添加到配置文件的启动命令中,之后重启Docker即可。

    sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
    sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=<your accelerate address>|g" /etc/systemd/system/docker.service
    sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=<your accelerate address>|g" /etc/systemd/system/docker.service
    sudo systemctl daemon-reload
    sudo service docker restart            
  • Redhat 7

    Red Hat 7配置加速器,需要编辑/etc/sysconfig/docker配置文件。在OPTIONS配置项中添加加速器配置--registry-mirror=<your accelerate address>。最后执行sudo service docker restart命令以重启Docker Daemon。

  • Redhat 6/CentOS 6

    在这两个系统上无法直接安装Docker,需要升级内核。

    配置加速器时需要编辑/etc/sysconfig/docker配置文件。 在other_args配置项中添加加速器配置--registry-mirror=<your accelerate address>。最后执行sudo service docker restart命令以重启Docker Daemon。

  • Docker Toolbox (Windows、Mac)

    Windows、Mac系统上使用Docker Toolbox的话,推荐做法是在创建Linux虚拟机的时候,就将加速器的地址配置进去。

    docker-machine create --engine-registry-mirror=<your accelerate address> -d virtualbox default
    docker-machine env default
    eval "$(docker-machine env default)"
    docker info            

    如果您已经通过docker-machine创建了虚拟机,则需要通过登录该虚拟机来修改配置。

    1. 执行docker-machine ssh <machine-name>命令以登录虚拟机。

    2. 修改/var/lib/boot2docker/profile文件,将--registry-mirror=<your accelerate address>添加到EXTRA_ARGS中。

    3. 执行sudo /etc/init.d/docker restart命令以重启Docker服务。

配置Containerd运行时镜像加速器

Containerd在启动时指定默认的配置文件路径为/etc/containerd/config.toml,如果您使用不同的路径,可以根据实际情况进行调整。

  1. 确保配置文件包含config_path

    执行以下命令,确认默认配置文件中是否存在config_path 配置(例如"/etc/containerd/cert.d")。

    cat /etc/containerd/config.toml |grep config_path -C 5

    如果不存在,您可以在默认配置文件中添加以下配置。

    说明

    若已有[plugins."io.containerd.grpc.v1.cri".registry],则在下面只需添加config_path,注意缩进。若没有,则可以在任意地方写入。

       [plugins."io.containerd.grpc.v1.cri".registry]
         config_path = "/etc/containerd/certs.d"
  2. 检查mirror相关配置。

    您可以使用cat /etc/containerd/config.toml | grep mirror -C 5命令检查配置文件中是否存在与mirror相关的配置。如果已存在,请进行清理,以避免冲突。

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

    如修改mirror相关配置,则需执行以下命令,重启Containerd。

    systemctl restart containerd

    若启动失败,执行以下命令。检查失败原因,通常是配置文件仍有冲突导致,您可以依据报错做相应调整。

    journalctl -u containerd
  3. 创建镜像加速器配置文件。

    使用以下内容在指定的config_path路径下创建docker.io/hosts.toml文件,创建后的文件路径为/etc/containerd/certs.d/docker.io/hosts.toml

    server = "https://registry-1.docker.io"
    
    [host."$(镜像加速器地址,如https://xxx.mirror.aliyuncs.com)"]
      capabilities = ["pull", "resolve", "push"]
  4. 拉取Docker镜像验证加速是否生效。如未生效,请参见Reference