【问题标题】:docker compose network_mode: "host" not workingdocker compose network_mode:“主机”不起作用
【发布时间】:2019-04-25 14:24:36
【问题描述】:

我的 dockerized 应用需要访问 localhost 网络上的某些内容,如果没有 network_mode: "host",这是不可能的

version: '3.4'
services:
  app:
    network_mode: "host"
    image: node:latest
    volumes:
      - .:/usr/app
      - node_modules:/usr/app/node_modules
    working_dir: /usr/app
    ports:
      - 3000:3000

volumes: 
  node_modules:

如果我注释掉 network_mode: "host",我的应用程序在 http://localhost:3000 上运行良好。如果我重新添加它,它仍然可以运行,但在 http://localhost:3000 上不再可访问。

编辑:我刚刚在 Ubuntu 上测试了一个 hello world,它可以工作,但不能在 mac 上工作,mac 似乎不适用于 network_mode: "host"

【问题讨论】:

  • localhost:3000 还是 404
  • 您是从同一台机器还是不同机器访问该 URL?
  • 同一台机器,在我的本地 Mac 上。我知道端口 3000 正在 docker 内部监听,因为我可以从 docker exec 卷曲,但不能从 docker 外部卷曲
  • 添加 docker-composw ps 的输出
  • repo 内没有 dockerfile。没有 docker 文件上下文:.这是没有用的

标签: docker docker-compose


【解决方案1】:

是的,在写这篇文章的时候,ma​​c肯定有问题,问题是ma​​c中的docker使用了容器所在的linux虚拟机,所以当您使用 network_mode: "host" 时,它仅对 VM 的网络有效,而不适用于您的 mac :( 更多信息 here

作为替代方案,不要使用network_mode: "host",而是将其保存在bridge(默认)中,然后将您的服务配置为使用host.docker,而不是访问localhost:xxxx。内部:xxxx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-29
    • 2022-08-17
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多