我正在使用下面的 docker-compose “配方”来启动一个运行 Storm 流处理框架组件的容器。我在 Mac 上发现了这一点
当我进入容器时(一旦它通过 docker exec -t -i <container-id> bash
启动并运行)
我做ping storm-supervisor
我收到错误
'未知主机'。但是,当我在 Linux 上运行相同的 docker-compose 脚本时
主机被识别并且 ping 成功。
解析主机失败导致Storm组件出现问题...但是什么 对于这个问题,可以忽略该组件正在执行的操作。我很确定我是否明白了 如何让 Mac 的 docker-compose 行为与 Linux 相匹配,那么我就没有问题了。
我认为我遇到了这篇文章中提到的问题: 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"
提前感谢您提供任何线索或提示!
最佳答案
“network_mode: host”在 docker mac 上无法正常工作。我遇到了同样的问题,我的桥接网络中只有很少的容器,而主机网络中的其他容器却很少。 但是,您可以将所有容器移动到自定义桥接网络。它为我解决了。 您可以编辑 docker-compose.yml 文件以拥有自定义桥接网络。
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
此外,执行以下命令来创建自定义网络。
docker network create storm
您可以通过以下方式验证
docker network ls
希望有帮助。
关于macos - docker-compose.yml 中的主机名无法在 Mac 上识别(但可以在 Linux 上运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42018989/