我的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"
一起工作
答案 0 :(得分:0)
是的,在撰写本文时, mac 肯定存在问题,问题是 mac 中的docker使用了一个Linux虚拟机来存放容器,因此当您使用network_mode: "host"
时,它将仅对VM的网络有效,而对您的mac无效:(更多信息here。
或者,不要使用network_mode: "host"
,而是将其保留在网桥(默认)中,然后将服务配置为不使用 localhost:xxxx ,而是使用 host。 docker.internal:xxxx