gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:55:24 24 4
gpt4 key购买 nike

我在同一网络(core_net)上有3个不同的docker容器(在Windows 10上),但是在后端使用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"]

在容器内进行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与核心工作之间进行通信,但在dam与核心之间进行通信不起作用。
有什么问题?

最佳答案

要使用网络连接到另一个容器,您不能使用localhost,但是cou可以使用您要访问的容器的名称。例如curl core:7000
要使用localhost,角色必须共享其网络堆栈。您可以使用--network container:core
而且,如果您不必从Docker外部访问后端,则仅暴露端口而不发布端口就足够了

关于docker - 同一网络上的Docker容器通信不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41075564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com