1、问题:今天做完一个新项目,搭建了一个新的虚拟机,打算使用docker来搭建各种环境,发现拉取镜像报错

2、报错信息:Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp
如下:


3、解决过程

一看,挺新奇,一开始只是简单的以为我打错命令了,以为docker没有这个镜像,然后查询下mysql镜像:

docker search mysql
1
发现是有的,说明我没有打错,

然后翻译了一下,显示说:来自守护程序的错误响应:Get“https://registry-1.docker.io/v2/“:拨号tcp

然后我重启docker试试

systemctl restart docker
1
再次拉取,发现还是不行

此时想到是不是拉取超时呢,然后配置了一下docker拉取镜像源

mkdir -p /etc/docker
vim /etc/docker/daemon.json

{
 "registry-mirrors": ["https://registry.docker-cn.com"]
}

# 重启Docker生效
systemctl restart docker
1
2
3
4
5
6
7
8
9
OK,还是不行,再试了下网络是否有问题

ping baidu.com
1
能ping通,说明网络没问题


此刻不要犹豫,直接百度

4、解决方案
(1)查看DNS客户机的配置文件

cat /etc/resolv.conf

1
2

发现我的nameserver 是 8.8.8.8了,说明我的DNS出了问题

需要新增DNS:nameserver 114.114.114.114
(2)修改配置文件

vim /etc/resolv.conf
1
修改后如下


(3)此刻我们再重新拉取镜像试试


发现拉取成功,再查询下本地镜像


补充知识:

/etc/resolv.conf是DNS客户机的配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式比较简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。

resolv.conf的关键字主要有4个

nameserver:定义DNS服务器的IP地址
domain:定义本地域名
search:定义域名的搜索列表
sortlist:对返回的域名进行排序
注意:这里最主要的就是nameserver关键字,如果没有指定nameserver就找不到DNS服务,其它关键字是可选的。

1
2
3
4
5
6
1)nameserver:表示域名解析时,使用该地址指定的主机为域名服务器,其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。
2)domain:声明主机的域名,很多程序会用到,如邮件系统。当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点(.)前面的内容。
3)search:它的多个参数指明域名查询顺序,当要查询没有域名的主机,主机将在由search声明的域中分别查找。
注意:search和domain不能共存,如果同时存在,后面出现的将会被使用。
4)sortlist:运行将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。
————————————————

感谢:解决docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp-CSDN博客

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐