在同一个networking上的Docker容器通信不起作用

我有3个不同的docker集装箱(在Windows 10上)在同一个networking(core_net),但是当在后端使用curl

-curl localhost:7000 

回应是:

“curl:(7)无法连接到本地端口7000:连接被拒绝”

为什么?

Docker命令:

前端:

 docker run -itd --name dam --net=core_net -p 3000:3000 DAM 

后端:

 docker run -itd --name core --net=core_net -p 6000:6000 -p 7000:7000 -p 8000:8000 -p 9000:9000 SG 

数据库:

 docker run --name mongodb -p 27017:27017 -d mongo:3 

这是dockerfile:

 Frontend: FROM node:4.5.0 # Create app directory RUN mkdir -p /DAM WORKDIR /DAM # Install app dependencies COPY package.json /DAM RUN npm install RUN npm install gulp -g RUN echo '{ "allow_root": true }' > /root/.bowerrc RUN npm install bower -g # Bundle app source COPY . /DAM ENV PORT 3000 3001 EXPOSE $PORT CMD ["gulp", "serve"] 

 Backend: FROM node:4.5.0 RUN npm install nodemon -g # Create app directory RUN mkdir -p /SG WORKDIR /SG # Install app dependencies COPY package.json /SG RUN npm install # Bundle app source COPY . /SG ENV PORT 6000 7000 8000 9000 EXPOSE $PORT CMD ["npm", "start"] 

内部容器的工作和检查是这样的:

 $ docker network inspect core_net { "Name": "core_net", "Id": "1f9e5426abe397d520360c05c95fee46fe08c98fe5c474c8b52764e491ea23e7", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1" } ] }, "Internal": false, "Containers": { "3d3b8780fba2090b1c2feaddf2e035624529cf5474ad4e6332fe7071c0acbd25": { "Name": "core", "EndpointID": "f0a6882e690cf5a7deedfe57ac9b941d239867e3cd58cbdf0ca8a8ee216d53a9", "MacAddress": "02:42:ac:12:00:04", "IPv4Address": "172.18.0.4/16", "IPv6Address": "" }, "bb6a6642b3a7ab778969f2e00759d3709bdca643cc03f5321beb9b547b574466": { "Name": "dam", "EndpointID": "b42b802e219441f833d24971f1e1ea74e093f56e28126a3472a44750c847daa4", "MacAddress": "02:42:ac:12:00:02", "IPv4Address": "172.18.0.2/16", "IPv6Address": "" }, "cf8dd2018f58987443ff93b1e84fc54b06443b17c7636c7f3b4685948961ba3f": { "Name": "mongodb", "EndpointID": "be02d784cbd46261b7a53d642102887cafa0f880c8fe08086b9cc026971ea1be", "MacAddress": "02:42:ac:12:00:03", "IPv4Address": "172.18.0.3/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} } 

mongodb与核心工作之间的沟通,但是大坝与核心之间的沟通不起作用。 有什么问题?

要连接到networking中的另一个容器,您不能使用本地主机,但是可以使用您想要访问的容器的名称。 curl core:7000

要使用本地主机,共享者必须共享他们的networking堆栈。 你可以用--network container:core来做到这--network container:core

如果你不需要从docker以外的地方到达后端,那么只需要暴露这些端口就行了,而不是公布它们