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

Chr*_*ord 1 macos networking docker

我正在使用下面的docker-compose'recipe'来调出一个运行风暴流处理框架组件的容器.我在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"
Run Code Online (Sandbox Code Playgroud)

提前感谢任何线索或提示!

小智 5

"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
Run Code Online (Sandbox Code Playgroud)

此外,执行以下命令以创建自定义网络.

docker network create storm
Run Code Online (Sandbox Code Playgroud)

你可以通过验证

docker network ls
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助.