我正在尝试设置一个合成文件来支持遗留应用程序。所述传统应用程序需要连接到最多3个DB (MySQL)。问题是我不能更改端口规范。我的意思是,我可能可以,但我们希望在不更改任何代码的情况下将所有内容容器化。
当我在我的一个容器上运行docker inspect时,我得到:
"IPAddress": "172.18.0.2",这很好。但是,当我尝试从我的MAC连接时,我得到超时。在过去,我不得不这样做一个网络别名:
sudo ifconfig lo0 alias 10.200.10.1/24但是,这似乎没有帮助
$ docker -v
Docker version 17.06.2-ce, build cec0b72mac:
$ 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发布于 2017-09-26 19:28:25
如果你阅读documentation,这在mac上是不可能的。
已知的限制、用例和解决方法
以下是Docker for Mac网络堆栈的当前限制的摘要,以及一些解决方法的想法。
macOS上没有docker0网桥
由于在Docker for Mac中实现网络的方式,您在macOS中看不到docker0接口。这个接口实际上在HyperKit中。
我无法ping我的容器
不幸的是,由于macOS的限制,我们无法将流量路由到容器,并从容器返回主机。
不能按容器进行IP寻址
无法从macOS主机访问docker (Linux)网桥网络。
用例和变通方法
上述限制将影响以下两种情况:
我想从一个容器连接到主机上的一个服务
Mac有一个不断变化的IP地址(如果您没有网络访问权限,则没有IP地址)。从17.06开始,我们的建议是连接到特殊的Mac-only DNS名称docker.for.mac.localhost,它将解析为主机使用的内部IP地址。
我想从MAC连接到一个容器
端口转发适用于本地主机;--publish、-p或-P都适用。从Linux公开的端口被转发到Mac。
我们当前的建议是发布一个端口,或者从另一个容器连接。请注意,即使在Linux上,如果容器位于覆盖网络上,而不是桥接网络上,这也是您必须做的,因为它们不是路由的。
https://stackoverflow.com/questions/46415833
复制相似问题