首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >默认桥接网络上的docker嵌入式dns

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

Stack Overflow用户
提问于 2016-12-30 18:02:05
回答 1查看 7.6K关注 0票数 9

这个问题可能是针对所有的码头大师。但让我先给出一些背景。我面临dns解析问题(在docker的默认网络“桥接”上),直到我阅读了https://docs.docker.com/engine/userguide/networking/文档中的以下内容

上面的docker网络检查命令显示了给定网络上所有连接的容器及其网络资源。此默认网络中的容器能够使用IP地址相互通信。Docker不支持默认桥网络上的自动服务发现。如果要与此默认桥接器网络中的容器名称通信,则必须通过遗留码头运行链接选项连接容器。

--link选项被弃用时,使任何docker run命令挂起,并最终粉碎停靠守护进程(本地),我尝试使用不同的桥接用户网络并将虚拟实例固定在它上。

代码语言:javascript
运行
复制
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可以很好地工作,但问题是:

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

如果任何码头网络专家都能给点提示的话,那就太好了。致以问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-30 22:04:46

为什么在默认网桥网络上服务/容器名称解析是不可能的?

没有技术上的原因,这是不可能的,但决定保持向后兼容性。

默认(“桥”)网络从来不支持通过内置的DNS进行服务发现,而且当该特性正在开发时,一些项目的维护人员担心他们不希望在默认网络中添加该功能,因为它会阻止其他实现。

此外,定制网络被设计成显式地允许容器进行通信。在默认网络上,这是通过禁用“容器间通信”(--icc=false)和使用--link在容器之间建立链接来实现的。自动发现连接到默认网络的任何容器将使使用起来更加复杂。

因此,创建一个自定义网络,并将容器附加到该网络,如果它们能够相互通信的话。

请注意,在许多情况下,并不需要您指定的所有选项;简单地运行docker network create foo对于大多数用例都是有效的。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41400603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档