Docker无法连接到桥接器上的容器
我正在尝试设置一个撰写文件来支持遗留应用程序。 所述遗留应用程序需要连接到3个DB(MySQL)。 问题是我不能改变端口规格。 我的意思是,我可能可以,但是我们希望容纳所有东西,而不必更改任何代码。
当我运行docker检查我的一个容器时,我得到:
"IPAddress": "172.18.0.2",
这很好。 但是,当我尝试从我的MAC连接,我得到超时。 在过去,我不得不这样做一个networking别名:
sudo ifconfig lo0 alias 10.200.10.1/24
但是,这似乎没有帮助
$ docker -v Docker version 17.06.2-ce, build cec0b72
苹果电脑:
$ uname -a Darwin wa-cbongiorno-mba.local 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64
这是我正在使用的撰写文件:
version: '3.3' services: db1: image: mysql:5.6 ports: - 3306 environment: - MYSQL_ROOT_PASSWORD=my-secret-pw volumes: - ./Schema/db1:/docker-entrypoint-initdb.d/:ro db2: image: mysql:5.6 ports: - 3306 environment: - MYSQL_ROOT_PASSWORD=my-secret-pw volumes: - ./Schema/db2:/docker-entrypoint-initdb.d/:ro
如果你阅读文档 ,这是不可能的现在在Mac上
已知的限制,用例和解决方法
以下是对Docker for Macnetworking堆栈的当前限制的总结,以及一些解决方法。
macOS上没有docker0网桥
由于在Docker for Mac中实现联网的方式,在macOS中看不到docker0接口。 这个接口实际上是在HyperKit中。
我无法ping我的容器
不幸的是,由于macOS的限制,我们无法将stream量路由到容器,从容器回到主机。
每个容器的IP地址是不可能的
Docker(Linux)桥接networking无法从macOS主机访问。
用例和解决方法
上述限制会影响到两种情况:
我想从集装箱连接到主机的服务
Mac有一个不断变化的IP地址(如果你没有networking访问权限,则没有)。 从17.06开始,我们的build议是连接到特殊的仅限于Mac的DNS名称docker.for.mac.localhost,该名称将parsing为主机使用的内部IP地址。
我想连接到MAC的容器
端口转发适用于本地主机; –publish,-p或-P全部工作。 从Linux暴露的端口被转发到Mac。
我们目前的build议是发布一个端口,或从另一个容器连接。 请注意,即使在Linux上,如果容器位于覆盖networking上,而不是桥接networking,这也是您必须执行的操作,因为这些networking不会被路由。