由于运营商网络原因,会导致您拉取Docker Hub镜像变慢,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像加速器,从而加速官方镜像的下载。
镜像加速器是面向个人开发者的服务,仅限于支持个人开发场景,不允许有再次封装或商业用途。
根据Docker公司政策,2020年11月01日起将逐步向Docker Hub匿名和免费用户实施速率和拉取请求次数限制。ACR镜像加速器无法保证一定拉取到latest最新的镜像版本,建议您指定镜像版本拉取。关于Docker Hub拉取请求次数限制的详细介绍,请参见Download rate limit。
面向生产环境使用场景,为避免Docker访问网络问题导致的镜像拉取失败,建议您在生产环境中慎重考虑对Docker Hub容器镜像的依赖。详情请参见使用说明。
使用说明
自2024年07月02日起,ACR对镜像加速功能的使用范围进行了调整:
仅限阿里云用户在具备公网访问的阿里云产品上使用该镜像加速能力。
仅支持通过镜像加速器拉取限定范围内的容器镜像。
Docker Hub拉取失败解决方案
由于运营商网络等不稳定因素可能导致镜像加速器无法成功拉取到指定版本的容器镜像,建议您在生产环境中谨慎使用依赖于Docker Hub的容器镜像。为了降低因网络问题引起的风险,您可以采取以下措施:
使用订阅海外源镜像功能:将Docker Hub等海外镜像仓库中的镜像同步到企业版实例中。
跨域加速拉取容器镜像:通过配置GA实例,实现网络加速,并跨域访问待拉取的海外镜像仓库。
使用官方支持的基础镜像:建议使用阿里云制品中心提供的官方支持的容器基础镜像,以确保稳定性和安全性。
步骤一:获取镜像加速器地址
ACR会为每一个账号(阿里云账号或RAM用户)生成一个镜像加速器地址,配置镜像加速器前,您需要获取镜像加速器地址。
登录容器镜像服务控制台。
在左侧导航栏选择
在镜像加速器页面获取加速器地址。
步骤二:配置镜像加速器
Docker和Containerd的镜像加速器配置方法有所不同。您可以根据具体情况选择合适的配置方式。关于Docker Hub镜像仓库拉取失败请参见Docker Hub拉取失败解决方案。
配置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创建了虚拟机的话,则需要通过登录该虚拟机来修改配置。
执行
docker-machine ssh <machine-name>
命令以登录虚拟机。修改/var/lib/boot2docker/profile文件,将
--registry-mirror=<your accelerate address>
添加到EXTRA_ARGS
中。执行
sudo /etc/init.d/docker restart
命令以重启Docker服务。
配置Containerd运行时镜像加速器
Containerd在启动时指定默认的配置文件路径为/etc/containerd/config.toml
,后续所有镜像仓库相关的配置可以在该文件中进行热加载,无需重启Containerd。如果您使用不同的路径,可以根据实际情况进行调整。
确保配置文件包含
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"
检查
mirror
相关配置。检查
/etc/containerd/config.toml
配置文件中是否存在与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"]
重启
containerd
(可选)。如果默认配置文件发生更改,则可执行以下命令,重启Containerd。
systemctl restart containerd
若启动失败,执行以下命令。检查为何失败,通常是配置文件仍有冲突导致,您可以依据报错做相应调整。
journalctl -u containerd
创建镜像加速器配置文件。
使用以下内容在指定的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"]
拉取Docker镜像验证加速是否生效。如未生效,请参见Reference。