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子网中