gpt4 book ai didi

tomcat - 自定义网络中链接的 Docker 容器之间的连接被拒绝?

转载 作者:行者123 更新时间:2023-11-28 23:25:24 25 4
gpt4 key购买 nike

我有以下 Docker 案例:

在撰写文件中,我通过以下方式创建自定义网络:

networks:
my-docker-network:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.238.0/24
gateway: 172.20.238.1

之后,我创建了几个属于该网络一部分的容器。它们是链接的,并且它们都向主机公开相同的端口(我不想发布端口,我只是想让它可以从主机和其他容器访问)

  web-backend-2:
build: ./backend-web
hostname: web-backend-host-2
links:
- web-backend-1
expose:
- 47500
networks:
my-docker-network:
aliases:
- backend2
container_name: web-backend-2-service


web-backend-1:
build: ./backend-web
hostname: web-backend-host-1
expose:
- 47500
networks:
my-docker-network:
aliases:
- backend1
container_name: web-backend-1-service

backend-web 项目是一个简单的centos7 容器,带有一个tomcat 和一些特定的tomcat 配置。现在,当我编写整个内容时,除了一个异常(exception),一切都很好:我无法在端口 47500 上从 backend1 连接到 backend2(反之亦然):

telnet backend1 47500
Trying 172.20.238.3...
telnet: connect to address 172.20.238.3: Connection refused

更令人费解的是,在没有任何EXPOSE声明的情况下,telnet在8080端口成功。

Docker version 1.11.2, build b9f10c9
docker-compose version 1.7.1, build 0a9ab35

我错过了什么?

谢谢!

最佳答案

根据我对 docker 工作原理的理解:

你不应该公开同一网络上的容器之间通信所需的端口(在他们的“世界”中,他们应该能够在任何端口上相互交谈而不公开它)

您应该只向您的主机公开端口。

确保您将 tomcat 配置为在 47500 上运行,我相信它正在监听 8080

你可以进入容器:

docker exec -it <container name> bash

netstat -tulpn

关于tomcat - 自定义网络中链接的 Docker 容器之间的连接被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37966116/

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