docker compose network_mode:“主机”不工作

Dav*_*ave 13 docker docker-compose

我的 dockerized 应用程序需要访问本地主机网络上的某些内容,如果没有,这是不可能的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:
Run Code Online (Sandbox Code Playgroud)

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

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

Mar*_*ano 35

是的,在撰写本文时,mac肯定存在问题,问题是mac中的 docker使用容器所在的 Linux 虚拟机,因此当您使用它时,network_mode: "host"它仅对 VM 的网络有效,而不对您的 mac 有效:(更多信息在这里

作为替代方案,不要使用network_mode: "host",而是将其保留在桥中(默认),然后将您的服务配置为使用host.docker.internal :xxxx 而不是到达 localhost :xxxx

  • 在撰写本文时,mac 的 network_mode 问题仍然存在 (2认同)