这个问题可能是针对所有的码头工人大师.但首先让我先介绍一下背景.我遇到了dns解决问题(在docker的默认网络"bridge"上),直到我在https://docs.docker.com/engine/userguide/networking/的文档中阅读了以下内容.
上面的docker network inspect命令显示给定网络上的所有连接容器及其网络资源.此默认网络中的容器可以使用IP地址相互通信.Docker不支持默认网桥上的自动服务发现.如果要与此默认桥接网络中的容器名称进行通信,则必须通过旧版docker run -link选项连接容器.
由于该--link选项已弃用,使任何docker run命令挂起并最终破坏docker守护程序进程(本地)我尝试使用不同的桥接用户网络并将虚拟实例固定到它.
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
Run Code Online (Sandbox Code Playgroud)
现在通过--name使用命名的服务/容器的解决方案工作正常,ping但问题是:
为什么默认桥接网络上无法解析服务/容器名称?
如果任何码头网络大师可以给出一个提示,那将会很棒.问候.