Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js docker(Mac/Windows):如何从容器访问主机服务?_Node.js_Mongodb_Docker_Mongoose_Dockerfile - Fatal编程技术网

Node.js docker(Mac/Windows):如何从容器访问主机服务?

Node.js docker(Mac/Windows):如何从容器访问主机服务?,node.js,mongodb,docker,mongoose,dockerfile,Node.js,Mongodb,Docker,Mongoose,Dockerfile,我可以使用docker run命令中的--network=“host”选项从docker容器内访问主机的服务。这在Ubuntu上运行良好。不过,同样的命令在Mac OS Sierra(10.12.4)和Windows 10上不起作用 我的使用案例是,我有一个本地mongoDB服务器在其上运行mongodb://127.0.0.1:27017. 我使用以下命令启动容器: docker run-p 3002:3002--network=“host”映像名 Dockerfile: FROM node:

我可以使用
docker run
命令中的
--network=“host”
选项从docker容器内访问主机的服务。这在Ubuntu上运行良好。不过,同样的命令在Mac OS Sierra(10.12.4)和Windows 10上不起作用

我的使用案例是,我有一个本地mongoDB服务器在其上运行mongodb://127.0.0.1:27017. 我使用以下命令启动容器:

docker run-p 3002:3002--network=“host”映像名

Dockerfile:

FROM node:7.5

RUN npm install -g pm2

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY package.json /usr/src/app
RUN npm install

COPY . /usr/src/app

EXPOSE 3002

ENV NODE_ENV local

CMD pm2 start --no-daemon server.js
我在Mac和Windows上都尝试过使用
--net=“host”
选项。它不起作用。请提供帮助。

macOS和(Windows操作系统)无法以本机方式运行Docker,因此Docker for Mac实际上在您的Mac上安装了一个非常小的Hxyve linux虚拟机。你的docker容器在这个虚拟机中运行,它们看起来像是在你的mac下运行,大多数时候都是这样。指定
--network host
时,docker容器将与Hxyve VM共享相同的网络接口,而不是mac。因此,容器无法访问在mac上的环回(localhost)网络上运行的内容

例如,您需要通过在Hxyve VM可访问的网桥网络上运行mongo db来访问mongo db,而不是127.0.0.1。它通常位于192.168.65.X子网中