docker - 默认桥接网络上的docker嵌入式dns

标签 docker dns

这个问题可能已经解决了所有 docker 。但是,让我先提供一些背景知识。我遇到了dns解析问题(在docker的默认网络“bridge”上),直到我在https://docs.docker.com/engine/userguide/networking/上阅读了文档中的以下内容

The docker network inspect command above shows all the connected containers and their network resources on a given network. Containers in this default network are able to communicate with each other using IP addresses. Docker does not support automatic service discovery on the default bridge network. If you want to communicate with container names in this default bridge network, you must connect the containers via the legacy docker run --link option.



随着--link选项的弃用,使任何docker run命令挂起,并最终(我在本地)粉碎了docker daemon进程,我尝试使用其他桥接用户网络并将其固定为虚拟实例。
docker network create -d bridge --subnet=172.15.0.0/16
  --gateway=172.15.0.1 
  -o com.docker.network.bridge.default_bridge=false 
  -o com.docker.network.bridge.enable_icc=true 
  -o com.docker.network.bridge.enable_ip_masquerade=true 
  -o com.docker.network.driver.mtu=1500 
  -o com.docker.network.bridge.name=docker1 
  -o com.docker.network.bridge.host_binding_ipv4=0.0.0.0 a

docker run --name db1 -e MYSQL_ROOT_PASSWORD=a -d mysql:5.7.16
docker run --name db2 -e MYSQL_ROOT_PASSWORD=a -d mysql:5.7.16
docker network connect --ip 172.15.0.40 a db1
docker network connect --ip 172.15.0.40 a db2

现在,使用--name可以解决通过ping命名的服务/容器的问题,但这是一个问题:

为什么在默认网桥网络上无法解析服务/容器名称?

如果任何 docker 网络专家可以给出提示,那将是很棒的。问候。

最佳答案

Why is service/container name resolution not possible on the default bridge network?



出于技术原因,这是不可能的,但是保留了向后兼容性的决定。

默认(“桥接”)网络从不支持通过内置DNS进行服务发现,并且在开发此功能时,某些项目的维护者担心他们不希望在默认网络上添加此功能,因为这会阻止其他实现。 。

此外,自定义网络旨在明确允许容器进行通信。在默认网络上,这是通过禁用“容器间通信”(--icc=false),并使用--link在容器之间建立链接来实现的。对连接到默认网络的任何容器进行自动发现会使使用起来更加复杂。

所以;创建一个自定义网络,并将容器连接到该网络(如果它们之间能够相互通信)。

请注意,在许多情况下,并不需要您指定的所有选项。只需运行docker network create foo就可以在大多数情况下工作。

关于docker - 默认桥接网络上的docker嵌入式dns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400603/

相关文章:

node.js - docker-compose 用于将 VS Code 中的 Node.js 调试器附加到 WSL docker 中的 Node 进程

http - DNS 查找时间和 Windows DNS 缓存

asp.net - 针对整个框架的项目的asp.net core 2.0 docker镜像

docker - 在 Dockerfile 中克隆 git 存储库并对其进行处理

docker - 应用程序如何发现规模的值(value)?

amazon-web-services - 将第三方托管的域路由到 AWS S3

kubernetes - 如何从 kubernetes 嗅探所有 DNS 记录?

eclipse - 无法验证 Weblogic 域”- Oracle Enterprise Pack

amazon-web-services - Route 53 别名 DNS 记录 : the alias target name does not lie within the target zone

java - spring boot + docker + kubernetes