Docker容器在同一网络上的通信不起作用

时间:2016-12-10 12:33:28

标签: docker

我在同一网络(core_net)上有3个不同的docker容器(在Windows 10上),但在后端使用curl时

-curl localhost:7000

回复是:

“curl:(7)无法连接到localhost端口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"]

在容器内部,ping工作,检查是这样的:

$ 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和核心工作之间的通信,但是在大坝和核心之间不起作用。 有什么问题?

1 个答案:

答案 0 :(得分:3)

要连接到网络中的另一个容器,您不能使用localhost,但是cou可以使用您想要访问的conatiner的名称。例如curl core:7000

要使用localhost,conatiner必须共享其网络堆栈。您可以使用--network container:core

执行此操作

如果您不必从docker外部到达后端,那么它应该只暴露端口,而不是发布它们

相关问题