macos - docker-compose.yml 中的主机名无法在 Mac 上识别(但可以在 Linux 上运行)

标签 macos networking docker

我正在使用下面的 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/

相关文章:

docker - 如何验证Docker Compose DNS的行为?

docker - 如何在一个mesos从节点上运行多个docker容器?

Swift- 在 Cocoa 中播放系统默认声音的最简单方法(macOS、OS X)

python - 如何在 mac 中配置 scitools.std?

c++ - 在 OSX 上使用不带 header 的 sinf()

c# - C# 中鼠标跟随绘图

c++ - winpcap抓包的单位是什么,二层帧还是三层包?

sql-server - 新手: Create dockerfile for SQL Server 2017

docker - 既然您已经是 root,那么在 Dockerfile 中运行 USER root 是否是多余的?

macos - osx 更改文件编码 (iconv) 递归