Docker容器内部 DNS 解析失败的问题

上段时间遇到了 docker 容器内部 dns 解析失败的问题,发现在 docker run 启动容器之后,容器内部访问外部的接口总是提示无法解析 dns,然而容器外部是可以解析的,dns的配置也没有任何问题。

用 docker exec -it contaner_name bash 进去,ping 任何域名都是不通。

最终的解决办法在在于,停止 docker daemon,删掉 ifconfig 查到的 docker0 这个 bridge,再重新启动 docker daemon,问题解决:

官方的解决脚本是这样的:

$ sudo apt-get install bridge-utils -y
$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0
$ sudo service docker start
$ docker network inspect bridge

实际上我做了这一步就成功了:

$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo service docker start

当然,我还需要 docker run -d 启用我原来的容器。

UPDATE 2017-01-22

彻底解决办法:

1. 在 docker-compose.yml 的容器配置里面,加入 dns 配置:

2. 参照 https://github.com/docker/docker/issues/541#issuecomment-32444639

在 “/etc/default/docker” 添加:

DOCKER_OPTS="-dns 119.29.29.29 -dns 180.76.76.76"

然后重启

  xxx:
    image: xxx
    volumes:
     - xxx:xxx
     - xxx:xxx
    links:
     - xxxx:xxx
    depends_on:
     - xxxxxx
    dns: 
     - 119.29.29.29
     - 180.76.76.76
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值