docker run时出现no such host问题的解决方法

文章描述了在尝试运行Dockerhello-world镜像时遇到的错误,即无法连接到registry-1.docker.io。尝试了修改DNS和使用国内镜像加速未果。通过dig命令获取registry-1.docker.io的IP,并在hosts文件中映射,然后重启Docker服务,成功解决了镜像拉取问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如题,当时使用docker run hello-world时报错,一直提示如下错误

docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 192.168.202.2:53: no such host.

 根据网上办法,设置了DNS以及国内镜像加速,都没有效果

后来看到某个解决方法,使用dig

dig registry-1.docker.io +noall +answer +nocomments
其中registry-1.docker.io是我们报错时提示无法连接的网址的前一部分

该命令结果如下

然后将使用这些IP地址,在hosts文件中进行映射 

echo "18.215.138.58 registry-1.docker.io" >> /etc/hosts

重启docker服务,进行测试,能够正常拉取镜像

systemctl daemon-reload

systemctl restart docker

 

 

 

 

### 解决方案 当尝试通过 `sudo docker run hello-world` 命令启动容器并遇到错误,可能的原因包括网络连接问题、DNS解析失败或Docker配置不当。以下是几种常见情况及其对应的解决方案。 #### DNS解析失败 如果收到类似于“no such host”的错误消息,则可能是由于本地计算机无法正确解析域名造成的。可以考虑修改系统的 `/etc/resolv.conf` 文件来指定可靠的公共DNS服务器地址,例如Google提供的8.8.8.8[^3]。 ```bash echo 'nameserver 8.8.8.8' | sudo tee /etc/resolv.conf > /dev/null ``` #### 网络超 对于TLS握手超的情况,这通常意味着客户端与远程主机之间的安全通信建立过程出现了延迟或者中断。一种方法是增加环境变量中的HTTP(S)_PROXY设置以改善对外部资源访问的速度和稳定性;另一种更简单的办法是在国内环境中利用加速器服务提供商所提供的镜像站点作为替代源[^2]。 按照以下步骤操作: 1. 打开终端窗口; 2. 编辑Docker守护程序的JSON配置文件(一般位于`/etc/docker/daemon.json`),如果没有该文件则创建它; 3. 添加如下内容到此文件内: ```json { "registry-mirrors": ["https://hub.atomgit.com"] } ``` 4. 使用命令重启Docker服务使更改生效: ```bash sudo systemctl restart docker ``` 以上措施应该能够有效缓解因网络状况不佳而导致的问题,并允许顺利拉取所需的Hello World测试镜像。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值