Menu

tlanyan

十里平湖霜满天,寸寸青丝愁华年

解决docker容器中” Could not resolve host”的报错

为了测试容器互联,在机器上开了两个不同的容器。启动后发现作为客户端的容器没有telnet等常用网络工具,于是执行 apt-get update & apt-get install telnet命令安装。命令意外地出现了如下的错误输出:

看错误信息是解析不了软件包仓库的域名,导致无法获取软件包列表。尝试ping一下www.baidu.com,输出:“ping: unknown host”。接着cat容器的/etc/resolv.conf,和宿主机的resolv.conf对比,发现内容一致。尝试ping 114.114.114.114,没有回应。这几个现象表明容器网络出了问题,导致无法ping通外网,也无法解析域名。

通过google,找到了栈爆网上的一个帖子,顺利解决了问题。解决步骤如下:

  1. 找出宿主机的dns: cat /etc/resolv.conf。一般是两个,例如: 10.0.0.2, 10.0.0.3;
  2. 编辑/etc/docker/daemon.json文件(该文件不存在,需新建),输入内容:

  1. 重启docker服务: systemctl restart docker。此条命令将会关掉所有的容器。

通过以上三个步骤,即可在容器内正常进行dns解析并顺利访问外网。可以通过启动alpine容器验证:

docker run -it alpine ping www.baidu.com

输出如下:

参考

  1. https://stackoverflow.com/questions/24991136/docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-a

发表评论

Scroll Up