在使用 ref="/tag/2019/" style="color:#B2A89E;font-weight:bold;">Docker 的过程中,很多人会遇到拉取镜像速度慢、甚至超时失败的问题。尤其是在国内网络环境下,直接访问 Docker Hub 官方源往往卡得不行,等几分钟都未必能下载完一个基础镜像。
为什么需要镜像加速?
因为官方镜像仓库位于海外,受网络链路限制,连接不稳定且速度低。而镜像加速器本质上是服务商提供的反向代理,把常用的镜像缓存到国内节点,你从它那里拉取自然就快了。
主流的国内镜像加速服务
目前阿里云、腾讯云、华为云等大厂都提供免费的 Docker 镜像加速服务。其中阿里云对个人用户比较友好,注册后就能获取专属加速地址。
以阿里云为例,登录容器镜像服务控制台,在“镜像工具”→“镜像加速器”页面可以找到你的专属地址,格式类似 https://xxxx.mirror.aliyuncs.com。
配置 Docker 使用国内加速器
修改 Docker 的 daemon 配置文件即可生效。大多数 Linux 系统下路径为 /etc/docker/daemon.json。如果文件不存在,可以直接创建。
编辑内容如下:
{
"registry-mirrors": [
"https://xxxx.mirror.aliyuncs.com"
]
}保存后重启 Docker 服务:
sudo systemctl daemon-reload
sudo systemctl restart docker执行 docker info,如果看到输出中包含你添加的 mirror 地址,说明配置成功。
多个加速源可叠加使用
为了提高容错性和速度,也可以同时配置多个镜像源:
{
"registry-mirrors": [
"https://xxxx.mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com"
]
}Docker 会按顺序尝试,哪个快用哪个。
Windows 和 Mac 用户怎么配?
使用 Docker Desktop 的用户可以在右键图标 → Settings → Docker Engine 中找到配置项,把上面的 JSON 内容粘进去,点击 Apply & Restart 就行。
有次我在公司搭测试环境,拉一个 PostgreSQL 镜像用了将近十分钟,换成阿里云加速后,不到半分钟就跑完了。这种体验上的差距,只有实际用过才懂。
需要注意的是,镜像加速器一般只对公共镜像有效,私有仓库或某些小众镜像可能不会被缓存。但日常开发用的 Nginx、MySQL、Redis、Alpine 这些基本都能命中缓存。
如果你经常和容器打交道,这个小配置值得花三分钟设置一遍。省下的时间,够你多喝两杯咖啡。