例如,根据2025.1.8最新测试的可用镜像源,我在此给出命令行 和文本编辑器 两种操作方法。
特别提醒,不管daemon.json
文件是否存在,下列两种方法均可直接使用,不会报错。
直接将下列文本粘贴到终端中,然后回车运行即可。
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
EOF
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
知识点补充:<<-'EOF'
告诉 shell 接下来的所有内容会被传递到命令 tee
,直到遇到标记 EOF
为止,用于将多行内容作为输入传递给命令。所以不需要担心输入一行之后系统就开始执行命令 。 此外,若daemon.json
文件不存在,直接使用tee
命令不会报错,而是会创建名为daemon.json
的文件 。
方法二:通过文本编辑器打开daemon.json
,然后粘贴
首先打开配置文件:
sudo nano /etc/docker/daemon.json
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
然后直接粘贴下列内容:
{
"registry-mirrors" : [
"https://docker.m.daocloud.io" ,
"https://docker.imgdb.de" ,
"https://docker-0.unsee.tech" ,
"https://docker.hlmirror.com" ,
"https://docker.1ms.run" ,
"https://func.ink" ,
"https://lispy.org" ,
"https://docker.xiaogenban1993.com"
]
}
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
知识点补充:若daemon.json
文件不存在,直接使用nano
命令不会报错,而是会创建名为daemon.json
的文件 。
重启docker服务
sudo systemctl daemon-reload && sudo systemctl restart docker
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
验证
sudo docker pull hello-world
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
出现下图,即为成功!
常见问题及对应解决方案
欢迎大家将自己遇到的问题回复在评论区中,我会积极解答并将其补充到博客中,大家共同进步!
1.换源后,可以成功pull,但是search会出错
报错如下图:
先说结论:截止目前,除非科学上网(挂梯子),不然无法解决此问题
目前由于国内政策限制,国内网络无法正常访问DockerHub,只能借助镜像站 目前各个可用的镜像站均是对pull
操作进行了加速优化,并没有支持search
功能,所以对于search
操作来说,镜像站无效
基于上述两点,此问题无解(除非科学上网)。
如果您有可行的解决办法,希望您及时私信或评论,造福大家!
补充
1.如何测试镜像源是否可用
我们可以直接根据 ” 换源方法1-临时换源 “ ,通过拉取hello-world
镜像进行测试。
hello-world
镜像是 Docker 官方提供的一个最基础的镜像,用来测试 Docker 是否正常工作。无论你更换了哪个镜像仓库,hello-world
镜像都可以作为最基本的测试。
但是需要注意,hello-world
镜像是否可以正常拉取与镜像源是否可用并不是完全对应的 。 某些特殊的镜像源可能并不支持hello-world
,但支持某些其他镜像。不过这是极少数的,
因此,通过hello-world
镜像是否可以正常拉取来判断镜像源是否可用,这是充分条件,而不是必要条件。
失败拉取如下图: 成功拉取如下图:
当然,我们也可以通过其他镜像来判断,例如alpine
、busybox
等也是比较基础且常见的镜像源,具体不再赘述。
2.Docker内的Linux换源教程
我们进入到Docker容器后,将是与宿主机不同的另一个Linux系统,那么如何更换Docker内Linux系统的软件源以获得更快的下载速度呢?
可以参考此教程 。
换源速通版(可以直接无脑复制粘贴)
创建目录
sudo mkdir -p /etc/docker
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
配置镜像源
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://docker.1ms.run",
"https://func.ink",
"https://lispy.org",
"https://docker.xiaogenban1993.com"
]
}
EOF
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
重启docker服务
sudo systemctl daemon-reload && sudo systemctl restart docker
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
验证
sudo docker pull hello-world
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
出现下图,即为成功!
评论记录:
回复评论: