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

Docker image stops resolving host.docker.internal after I add 8.8.8.8 DNS entry

我必须添加 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 条目并重新加载容器时,一切正常。

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

在架构上,容器解决所有 运行 转发到上游 DNS 提供商(如 8.8.8.8)的内部 DNS 服务,如果您直接将 DNS 设置为在 8.8.8.8 解析,它不会被“代理”通过内部 DNS,负责解析 docker.internal,等等

upstream是通过/etc/resolv.conf设置的,所以如果你只更新系统DNS到8.8.8.8就更容易了。