【错误】Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp: lookup registry-1.

今天准备搭建一下ELK集群,结果第一步下载镜像时就出了问题,这也是用Docker以来第一次遇到问题,总结一下。

报错如下:

Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 8.8.8.8:53: read udp 192.168.241.128:34634->8.8.8.8:53: i/o timeout

起初把报错信息贴到百度去搜索几乎都是说将8.8.8.8设置为DNS服务器,但是事实是我的已经配过的,如下:

既然很多帖子都是帖的这个,那证明还是有一部分人是这个原因造成的,可以尝试下。

可视化的方式   :就是找个网络配置,修改即可,步骤如下

 

 

 

命令方式  : 

vi /etc/resolv.conf

#添加这两行
nameserver 8.8.8.8
nameserver 8.8.4.4

尽管本人不是这个原因,但是既然说到网络了,就决定测试一下网络联通性,毕竟拉取镜像也需要保证网络正常通信, 于是便Ping了一波百度,也是ok的。

之后在国外的网站StackOverFlow也看到一些类似的解释,但是其中一个说是docker服务的问题,于是就决定重启一下docker服务。

输入  systemctl restart docker 

但是好像并没有什么作用,突然有个奇怪的想法,觉得会不会是restart没起作用啊,觉得关停一下docker服务试试,systemctl stop docker ,结果提示了这句话:

Warning: Stopping docker.service, but it can still be activated by: docker.socket

百度一波,原来这是因为除了docker.service单元文件,还有一个docker.socket单元文件…docker.socket这是用于套接字激活。该警告意味着:如果你试图连接到docker socket,而docker服务没有运行,系统将自动启动docker。

解决方案一
        你可以删除 /lib/systemd/system/docker.socket
        从docker中 docker.service 文件 删除 fd://,即remove -H fd://

解决方案二
        如果不想被访问时自动启动服务
        输入命令:sudo systemctl stop docker.socket

当然,也可以不用管。总之这个警告不是太需要关注的点,我们继续重启操作。

重启如果报错:Failed to restart docker.service: Unit docker.service not found.

可能需要重装,但是如果docker是通过 snap install docker 命令安装的,出现这个问题并不需要,重启命令换位 sudo systemctl restart docker 即可。

正常重启完成之后发现就可以正常拉取镜像了。

重启后还是会有类似的错误提示,解决方案:Docker pull 命令报错整理_To Do.的博客-优快云博客

### 解决方案 当遇到 Docker 连接 `registry-1.docker.io` 出现 DNS 解析问题时,通常是因为本地系统的 DNS 配置不正确或无法正常工作。以下是详细的解决方案: #### 修改主机的 DNS 设置 可以通过修改 `/etc/resolv.conf` 文件来指定可靠的公共 DNS 服务器,例如 Google 的 `8.8.8.8` 或者国内常用的 `114.114.114.114`。 具体操作如下: 1. 打开终端并编辑 `/etc/resolv.conf` 文件: ```bash sudo nano /etc/resolv.conf ``` 2. 添加以下内容到文件顶部: ```plaintext nameserver 8.8.8.8 nameserver 114.114.114.114 ``` 注意:某些情况下,该文件可能被动态覆盖。如果发现更改无效,则可以尝试通过网络管理工具设置静态 DNS[^1]。 #### 使用 Docker 自带的 DNS 配置功能 另一种方法是让 Docker 使用自定义的 DNS 服务器而不是依赖于宿主机的配置。这可以在启动 Docker 守护进程时完成。 ##### 方法一:临时测试 运行容器时手动指定 DNS 参数: ```bash docker run --dns=8.8.8.8 --dns=114.114.114.114 -d -p 3018:3000 --name test imagename/imagename ``` ##### 方法二:永久生效 为了使此更改适用于所有容器,需调整 Docker 的守护程序配置文件(通常是 `/etc/docker/daemon.json`)。如果没有该文件则创建它,并加入以下内容: ```json { "dns": ["8.8.8.8", "114.114.114.114"] } ``` 保存后重启 Docker 服务以应用新设置: ```bash sudo systemctl restart docker ``` 以上两种方式都可以有效解决由于错误的DNS而导致的连接失败问题[^4]。 ### 测试验证 执行以下命令确认是否能够成功拉取镜像: ```bash docker pull ubuntu:16.04 ``` 如果不再显示类似的错误消息,则说明问题已得到妥善处理。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

To Do.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值