我在同一台Ubuntu 16.04计算机上运行了两个Docker容器。 Golang Web服务器发布端口443和Postgres数据库服务器发布端口5432.
3月5日,Web服务器无法再通过getsockopt连接超时错误连接到Postgres容器。我可以远程连接到Postgres服务器。
我尝试将Golang服务器中的Postgres连接主机字符串从我的机器的ip更改为localhost和0.0.0.0,但都没有工作。 我正在使用UFW,尝试了一些我通过搜索找到的不同的东西,但没有运气。我认为它会彻底阻止连接而不会超时。
尝试了很多其他的事情,我唯一能想到的是Docker的3月1日更新。
如果您需要更多信息,请告诉我。
运行命令:
docker run -dit -p 5432:5432 --restart always --name postgres_container_name -v /mnt/db1:/db -e PGDATA=/db/data postgres_image_name
docker run -dit -p 443:443 --log-driver=syslog --restart always --name go_container_name go_image_name
我使用我的机器的ip作为主机,它默认为postgres端口。 来自golang的示例错误,用占位符替换我的IP地址:
[CRIT] dial tcp MY_IP:5432: getsockopt: connection timed out
我可以在我的远程计算机上运行Golang服务器,它可以连接。只是在同一台机器上的容器上运行它即使它以前工作也会超时。我之前遇到过这个问题并运行它修复了它:
ufw allow in on docker0
看来这些规则仍然存在且有效,我甚至尝试过关闭ufw但仍然没有运气。