在公司新上了一台测试ref="/tag/36/" style="color:#2B406D;font-weight:bold;">服务器,刚装好 Docker 准备跑个 Nginx 容器,结果执行 docker pull nginx 半天没反应。等了快十分钟才下载完,旁边的同事笑着说:‘你没配镜像加速吧?’
这场景太常见了。默认情况下,Docker 会从国外的官方仓库(Docker Hub)拉取镜像,网络延迟高、速度慢,有时候还会直接超时失败。特别是在国内使用,简直就是煎熬。解决办法其实很简单——配置镜像加速器。
什么是镜像加速器?
你可以把它理解成“Docker 镜像的国内 CDN”。一些大厂比如阿里云、腾讯云、网易云都提供了镜像缓存服务,把常用的镜像提前同步到国内节点。你从这些节点拉取,速度自然快得多。
如何配置镜像加速?
Docker 的镜像加速主要通过修改守护进程的配置文件 daemon.json 来实现。这个文件通常位于 /etc/docker/ 目录下。
先检查一下文件是否存在:
ls /etc/docker/daemon.json
如果不存在,就创建一个:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://xxxxxx.mirror.aliyuncs.com"
]
}
EOF
注意替换上面的地址为你自己申请的镜像地址。如果你用的是阿里云,登录后在容器镜像服务页面可以找到专属的加速器地址。
保存之后,重启 Docker 服务使配置生效:
sudo systemctl daemon-reload
sudo systemctl restart docker
然后运行 docker info,如果看到输出里有 Registry Mirrors 并且后面跟着你配置的地址,说明已经成功了。
几个常用的镜像加速地址
- 阿里云:登录容器镜像服务获取个人专属地址
- 网易云:https://hub-mirror.c.163.com
- 腾讯云:https://mirror.ccs.tencentyun.com
- 中科大:https://docker.mirrors.ustc.edu.cn
比如用网易的,配置就是:
{
"registry-mirrors": [
"https://hub-mirror.c.163.com"
]
}
验证加速效果
改完之后再试一次:
docker pull ubuntu:20.04
之前可能要一两分钟,现在几秒就拉完了。特别是当你频繁部署、调试、重建容器的时候,这个提升非常实在。
另外提醒一点,有些云服务器本身就在内网环境,比如阿里云 ECS 如果选了特定镜像源,在 VPC 内访问会走内网通道,速度更快,延迟更低。
别再忍受慢速拉取了,花两分钟配个镜像加速,工作效率立马不一样。