我试图设置撰写文件以支持旧版应用程序。所述旧版应用程序最多需要连接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

苹果电脑:
$ 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

最佳答案

如果您阅读documentation,则在Mac上目前无法实现
已知局限性,用例和解决方法
以下是Docker for Mac网络堆栈上当前限制的摘要,以及一些解决方法的想法。
macOS上没有docker0桥
由于在Docker for Mac中实现联网的方式,因此您无法在macOS中看到docker0接口(interface)。该接口(interface)实际上在HyperKit中。
我无法ping我的容器
不幸的是,由于macOS的限制,我们无法将流量路由到容器,也无法将流量从容器路由回主机。
每个容器的IP寻址是不可能的
无法从macOS主机访问docker(Linux)桥接网络。
用例和解决方法
上述限制将影响两种情况:
我想将集装箱从主机连接到服务
Mac的IP地址正在更改(如果没有网络访问权限,则没有IP地址)。从17.06开始,我们的建议是连接到专用于Mac的特殊DNS名称docker.for.mac.localhost,它将解析为主机使用的内部IP地址。
我想从MAC连接到一个容器
端口转发适用于本地主机; --publish,-p或-P都可以。从Linux公开的端口将转发到Mac。
我们当前的建议是发布端口,或从另一个容器连接。请注意,即使容器在覆盖网络而不是桥接网络上,即使在Linux上,这也是您必须执行的操作,因为这些容器未路由。

关于mysql - Docker无法连接到网桥接口(interface)上的容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46415833/

10-16 13:19