首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将tomcat容器中的应用程序连接到在同一网络中创建的postgres容器?

如何将tomcat容器中的应用程序连接到在同一网络中创建的postgres容器?
EN

Stack Overflow用户
提问于 2018-09-10 10:16:35
回答 1查看 293关注 0票数 0

我正在容器中运行一个基于tomcat的应用程序,在我的ubuntu主机上运行一个Postgres数据库容器。他们都在我定义的码头桥网络里。我的防火墙启用了。我的防火墙对5432端口没有任何拒绝规则。禁用防火墙时,tomcat应用程序可以使用其IP或服务名称连接到数据库容器。但是,当启用防火墙时,它不会连接到数据库容器。我在DOCKER_OPTS=中设置了docker.conf“-iptables=false”,并重新启动了docker。当启用防火墙时,为什么不连接?

1)以下是我的现行规则:

的行动

2377/tcp允许在任何地方

7946/tcp允许在任何地方

7946/udp允许任何地方

4789/udp允许任何地方

22允许在任何地方

8443允许10.20.220.185

8443允许10.20.220.78

8081允许10.5.0.7

5432允许在任何地方

8081允许10.5.0.5

2377/tcp (v6)允许任何地方(v6)

7946/tcp (v6)允许任何地方(v6)

7946/udp (v6)允许任何地方(v6)

4789/udp (v6)允许任何地方(v6)

22 (v6)允许任何地方(v6)

5432 (v6)允许任何地方(v6)

=========================================================================

2)这是我使用服务名称连接到数据库的应用程序配置:- driverClass=org.postgresql.Driver jdbcUrl=jdbc:postgresql://PostgresDatabase:5432/dockerdb user=dockeruser

EN

回答 1

Stack Overflow用户

发布于 2018-09-11 09:14:47

设置--iptables=false意味着停靠守护进程无法在主机上配置iptables规则。然而,当你启用ufw的时候,它是非常重要的。

我确信,在您删除配置中的DOCKER_OPTS="--iptables=false"并重新启动daemon后,此问题将消失。

在启动过程中,daemon将配置一些额外的iptable规则,以使容器之间/容器与外部世界之间的通信良好,因为防火墙/ufw将通过DEFAULT_FORWARD_POLICY丢弃数据包。

下面是docker创建iptable规则的一个粗略过程:

  1. 使用iptable工具在docker0上启用NAT。 iptables -I POSTROUTING -t nat -s 172.17.0.1 ! -o docker0 -j MASQUERADE
  2. 启用容器内的通信。 iptables -I FORWARD -i docker0 -o docker0 -j ACCEPT
  3. 启用容器和外部世界之间的通信。 iptables -I FORWARD -i docker0 ! -o docker0 -j ACCEPT
  4. 接受来自已经建立的外部连接的任何数据包。 iptables -I FORWARD -o docker0 -m conntrack -ctstate RELATED,ESTABLISHED -j ACCEPT

最重要的是,您启用了iptables设置为false,启用了防火墙,而没有任何额外的操作。就像你把钥匙扔在门锁上,但你还是想出去。因此,我强烈建议您在完全了解码头网络体系结构和这些组件是如何协同工作之前,不要更改任何对接器网络设置。

这是另一个问题以另一种方式提出的问题。愿答案对你有更多的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52255594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档