由于众所周知的原因,docker在国内无法很好的访问国外的镜像,因此我们一般拉取docker镜像需要更换镜像源,这样才能更加顺畅的拉取镜像。但是由于政策的加强,大部分常见的镜像源已经无法使用,但是仍然会有部分镜像可以使用,接下来本文来介绍如何修改docker的镜像源。
1. 拉取失败现象
比如说我们拉取一个nginx的镜像,timeout就是典型的拉取失败的现象,接下来我们就来介绍下如何解决这个问题。

2. 更换源方式1:临时换源
比如说你现在拉取镜像的方法是:
sudo docker pull hello-world
其实,docker默认拉取上面镜像的方式是:
sudo docker pull docker.io/library/hello-world:latest
这里,docker.io/library/是关键,因为国内无法访问这个docker的官方域名,导致拉取镜像失败,但是更换一个国内可以访问的镜像代理,我们就可以轻松拉取镜像了。目前存在的镜像代理良莠不齐,有付费的也有免费的,但免费的有免费的优点,付费的也有付费的优势吧。
目前我知道的免费可用的有
proxy.vvvv.ee
free.hubfast.cn
docker.jiaxin.site
还有一些可以免费试用的镜像,例如
鲸落镜像 docker.aatp.eu.org如果免费的不稳定就可以去尝试下鲸落镜像。
有了镜像源,我们随机选取一个镜像源,代理方式如下:
sudo docker pull proxy.vvvv.ee/library/hello-world:latest
至此临时换源的方法就介绍完毕了。但是需要注意的是,这种方法拉取每次都需要制定相应的镜像源。如果是docker-compose.yaml文件可以按照如下方式修改,即在image那里填入加上代理后的镜像源,如下所示:
version: '3.3'
services:
alist:
image: 'docker.aatp.ru.org/xhofe/alist'
container_name: docker_compose_alist
volumes:
- '/volume1/docker/alist:/opt/alist/data'
ports:
- '5246:5244'
environment:
- PUID=0
- PGID=0
- UMASK=022
- TZ=Asia/Shanghai
restart: unless-stopped
接下来介绍的是第二种换源方式,永久换源。
3. 更换源方式2:永久换源
永久换源的方式是修改docker的配置文件 daemon.json,
首先需要编辑配置文件,编辑器可以使用nano或者vim,我这里选择使用nano,命令如下:
sudo nano /etc/docker/daemon.json
(没有这个文件就新建一个,内容就是上面那种 JSON 格式)
创建之后将下面内容粘贴进去:
{
"registry-mirrors": [
"https://docker.aatp.eu.org",
"https://docker.m.daocloud.io"
]
}
然后保存文件,nano保存文件的方式是ctrl+s,退出方式是ctrl+x。vim保存文件方式为:先用英文打出来冒号,然后输入wq进行保存,保存完毕之后需要重启docker使配置生效,重启命令如下:
sudo systemctl restart docker
到了这一步,一般都没问题了,这次我们需要验证一下源是不是真的修改成功了,我们使用命令:
docker info | grep -A5 'Registry Mirrors'
如果输出有是daemon.json的内容,就代表镜像修改成功了,如下图所示:

最后我们拉取一个镜像试一下,测试结果如下图所示:

至此,更换镜像源的两种方法介绍完毕,谢谢大家观看。