Docker无法连接到桥接接口

时间:2017-09-25 23:56:28

标签: mysql docker

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

1 个答案:

答案 0 :(得分:2)

如果您阅读documentation,则目前无法在mac

上阅读

已知限制,用例和变通方法

以下是Docker for Mac网络堆栈的当前限制摘要,以及解决方法的一些想法。

macOS上没有docker0网桥

由于在Docker for Mac中实现网络的方式,您无法在macOS中看到docker0接口。这个界面实际上在HyperKit中。

我无法ping我的容器

不幸的是,由于macOS的限制,我们无法将流量路由到容器,也无法将容器路由回主机。

无法进行每容器IP寻址

无法从macOS主机访问docker(Linux)桥接网络。

用例和变通方法

上述限制会影响两种情况:

我想从一个集装箱连接到主机上的服务

Mac有不断变化的IP地址(如果没有网络访问权限,则为无)。从17.06开始,我们的建议是连接到特殊的Mac-DNS DNS名称docker.for.mac.localhost,它将解析为主机使用的内部IP地址。

我想从MAC连接到容器

端口转发适用于localhost; --publish,-p或-P都可以。从Linux公开的端口将转发到Mac。

我们目前的建议是发布端口,或从另一个容器连接。请注意,如果容器位于覆盖网络而不是桥接网络上,则即使在Linux上也必须执行此操作,因为这些容器不会路由。