我正在尝试设置撰写文件以支持旧版应用程序。所述遗留应用程序需要连接最多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 cec0b72
MAC:
$ 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
答案 0 :(得分:2)
如果您阅读documentation,则目前无法在mac
上阅读以下是Docker for Mac网络堆栈的当前限制摘要,以及解决方法的一些想法。
由于在Docker for Mac中实现网络的方式,您无法在macOS中看到docker0接口。这个界面实际上在HyperKit中。
不幸的是,由于macOS的限制,我们无法将流量路由到容器,也无法将容器路由回主机。
无法从macOS主机访问docker(Linux)桥接网络。
上述限制会影响两种情况:
Mac有不断变化的IP地址(如果没有网络访问权限,则为无)。从17.06开始,我们的建议是连接到特殊的Mac-DNS DNS名称docker.for.mac.localhost,它将解析为主机使用的内部IP地址。
端口转发适用于localhost; --publish,-p或-P都可以。从Linux公开的端口将转发到Mac。
我们目前的建议是发布端口,或从另一个容器连接。请注意,如果容器位于覆盖网络而不是桥接网络上,则即使在Linux上也必须执行此操作,因为这些容器不会路由。