我有一台带有两个 Docker 容器的服务器,每个容器都有自己的 PostgreSQL 数据库。一个容器映射到端口 32772,另一个映射到端口 32771。这两个数据库以前可供远程用户访问,并且可以同时完美运行。直到我们强制关闭机器。
前任管理员设置了一个系统,这样 docker 就会在启动时启动,32771 的容器也会启动。我使用 手动重启了 32772 容器docker start
。现在,怪事开始了。
psql
当前计算机可以访问这两个nc
数据库,而远程计算机只能访问数据库 32771。
两个容器都使用官方的 postgres 映像,它们之间的唯一区别(除了数据库数据之外)是它们位于不同的 docker 网络中,所以我不知道是什么导致了这种行为的改变。
我查看了一下iptables
,没有发现任何奇怪的行为。两个端口都标记为在 ipv4 和 ipv6 中监听。32772pga_conf.hba
并且postgresql.conf
配置正确。数据库日志中没有失败的连接尝试。知道是什么导致了这种行为吗?
一些日志:
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (2 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.18.0.2 tcp dpt:postgresql
ACCEPT tcp -- anywhere 172.18.0.3 tcp dpt:http
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:7687
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:7474
ACCEPT tcp -- anywhere 172.17.0.3 tcp dpt:postgresql
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (2 references)
target prot opt source destination
DROP all -- anywhere anywhere
DROP all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d001590ef69 postgis/postgis "docker-entrypoint.s…" 12 months ago Up 2 hours 0.0.0.0:32772->5432/tcp, :::32772->5432/tcp postgis
6273d983556f postgres "docker-entrypoint.s…" 20 months ago Up 2 months 0.0.0.0:32771->5432/tcp, :::32771->5432/tcp pg_container
3714a16b6263 dpage/pgadmin4 "/entrypoint.sh" 20 months ago Up 2 months 443/tcp, 0.0.0.0:5050->80/tcp, :::5050->80/tcp pgadmin4_container
docker 网络列表
49a50a34254d bridge bridge local
db7b6beb29cd host host local
cc7bc4c85bbd none null local
36ae3773e28d pgadmin_default bridge local