docker-compose.yml中的主机名无法在mac上识别(但在linux上运行)

我正在使用下面的docker-compose'recipe'来调出一个运行风暴stream处理框架组件的容器。 我发现在Mac的时候,当我进入容器(一旦它通过docker exec -t -i <container-id> bash启动并运行),并且我ping storm-supervisor我得到错误“unknown host”。 但是,当我在Linux上运行相同的docker-compose脚本时,主机被识别并且ping成功。

无法parsing主机导致Storm组件出现问题…但是该组件正在做什么可以忽略这个问题。 我很确定,如果我想出了如何让Mac的docker-compose行为与Linux匹配,那么我就没有问题了。

我想我遇到了这个post中提到的问题: https : //forums.docker.com/t/docker-compose-not-setting-hostname-when-network-mode-host/16728

 version: '2' services: supervisor: image: sunside/storm-supervisor container_name: storm-supervisor hostname: storm-supervisor network_mode: host ports: - "8000:8000" environment: - "LOCAL_HOSTNAME=localhost" - "NIMBUS_ADDRESS=localhost" - "NIMBUS_THRIFT_PORT=49627" - "DRPC_PORT=49772" - "DRPCI_PORT=49773" - "ZOOKEEPER_ADDRESS=localhost" - "ZOOKEEPER_PORT=2181" 

在此先感谢您的任何线索或提示!

在docker mac上,“network_mode:host”不能很好地工作。 我遇到了同样的问题,在桥网中我的容器很less,而在主机networking中我的容器很less。 但是,您可以将所有容器移动到自定义桥接networking。 它解决了我。 您可以编辑您的docker-compose.yml文件以build立自定义网桥。

 version: '2' services: supervisor: image: sunside/storm-supervisor container_name: storm-supervisor hostname: storm-supervisor ports: - "8000:8000" environment: - "LOCAL_HOSTNAME=localhost" - "NIMBUS_ADDRESS=localhost" - "NIMBUS_THRIFT_PORT=49627" - "DRPC_PORT=49772" - "DRPCI_PORT=49773" - "ZOOKEEPER_ADDRESS=localhost" - "ZOOKEEPER_PORT=2181" networks: - storm networks: storm: external: true 

另外,执行下面的命令来创build自定义networking。

 docker network create storm 

你可以通过validation

 docker network ls 

希望它有帮助。