Docker配置了daemon镜像源但未生效仍然走https://registry-1.docker.io/v2/解决方案
目录
问题描述
1 按如下步骤配置镜像源
修改/etc/docker/daemon.json
检查文件是否正确
2 严格按顺序执行以下命令
重启docker
检查镜像源是否读取成功
3 执行拉取命令
问题描述
已经正确配置了/etc/docker/daemon.json,并且docker info中也可以看到自己配置的Registry Mirrors。
但是拉取镜像时,提示:Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)。
关键解决方案就是要正确重启docker,以及重载daemon。已经配置好镜像源的同学可以直接点击跳至:2 严格按顺序执行以下命令
1 按如下步骤配置镜像源
修改/etc/docker/daemon.json
cd /etc/docker
Vim daemon.json
daemon.json文件内容:
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.domys.cc",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://cjie.eu.org",
"https://docker.m.daocloud.io",
"https://hub.rat.dev",
"https://docker.1panel.live",
"https://docker.rainbond.cc"
]
}
检查文件是否正确
[root@192 docker]# cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.domys.cc",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://cjie.eu.org",
"https://docker.m.daocloud.io",
"https://hub.rat.dev",
"https://docker.1panel.live",
"https://docker.rainbond.cc"
]
}
2 严格按顺序执行以下命令
重启docker
很多教程都提到了要停止服务和socket,但是经过漫长的摸索和踩坑,在反复执行这些命令以后发现:
必须要先停止所有东西,在重载daemon。这样才可以正常拉取镜像。
sudo systemctl stop docker.service
sudo systemctl stop docker.socket
sudo systemctl daemon-reload
sudo systemctl restart docker
检查镜像源是否读取成功
执行
docker info | awk '/Registry Mirrors:/,/^[^ ]/'
或者也可以直接执行
docker info
可以看到这样的内容时,表示镜像源已经正常读取了
3 执行拉取命令
执行命令
docker pull [镜像名]
例如:
docker pull mysql
可以看到已经能正常拉取镜像了