添加 8.8.8.8 DNS 条目后,Docker 映像停止解析 host.docker.internal

Posted

技术标签:

【中文标题】添加 8.8.8.8 DNS 条目后,Docker 映像停止解析 host.docker.internal【英文标题】:Docker image stops resolving host.docker.internal after I add 8.8.8.8 DNS entry 【发布时间】:2022-01-20 01:10:56 【问题描述】:

我必须添加 2 个 DNS 条目 8.8.8.88.8.4.4,之后我的图像无法连接到 Xdebug,因为我的图像中不再识别 host.docker.internal

curl: (6) Could not resolve host: host.docker.internal(在 docker 镜像内部执行)

php:
  build:
    context: docker
    dockerfile: php.dockerfile
  container_name: php-site
  volumes:
    - .:/var/www/html
  ports:
    - "9000:9000"
  networks:
    - laravel
  dns: 
    - 8.8.8.8
    - 8.8.4.4

当我删除这些 DNS 条目并重新加载容器时,一切正常。

我觉得解决方案并不难找到,但我不是网络专家,所以我请你帮忙。

【问题讨论】:

【参考方案1】:

在架构上,容器解决方案都运行内部 DNS 服务,这些服务转发给上游 DNS 提供商,如 8.8.8.8,如果您直接将 DNS 设置为在 8.8.8.8 进行解析,则不会通过内部 DNS “代理”,即负责解析docker.internal等

上游是通过 /etc/resolv.conf 设置的,因此如果您将系统 DNS 更新为 8.8.8.8 会更容易。

【讨论】:

以上是关于添加 8.8.8.8 DNS 条目后,Docker 映像停止解析 host.docker.internal的主要内容,如果未能解决你的问题,请参考以下文章

创建好docker后不能apt-get update解决方法

创建好docker后不能apt-get update解决方法

Linux校园网DNS问题

Docker:ping:未知主机 yahoo.com

Centos7配置静态IP后无法ping通外部网络的问题(无法上网)

Docker中images无法使用apt-get update解决方案