无法使用 docker 连接到 ipv6 中的 postgres
Posted
技术标签:
【中文标题】无法使用 docker 连接到 ipv6 中的 postgres【英文标题】:can't connect to postgres in ipv6 using docker 【发布时间】:2020-12-10 01:13:17 【问题描述】:我的场景如下:我在 ubuntu 20.04 服务器上安装了一个 postgres 12,并在另一个启用了 ipv6 的主机上运行了一个 docker 容器。
我无法使用 ipv6 从 docker 容器内部访问 postgres 服务器。
这些命令在容器内工作:
$ ping POSTGRES_SERVER_IPv4
$ ping POSTGRES_SERVER_IPv6
$ telnet POSTGRES_SERVER_IPv4 5432
但这在容器内部不起作用(但它在 docker 主机中起作用):
$ telnet POSTGRES_SERVER_IPv6 5432
我已经在 postgres pg_hba.conf 中设置了 listen_address = '*' 和 "host all all md5"。
编辑:
我意识到我的网络适配器正在使用两个 IPv6,一个是我在 netplan 中定义的静态,另一个在我的网络范围内,但我没有分配它。
【问题讨论】:
你能从另一台(非 docker)机器访问 postgres 服务器吗? "在您可以在 Docker 容器或 swarm 服务中使用 IPv6 之前,您需要在 Docker 守护进程中启用 IPv6 支持。" ...docs.docker.com/config/daemon/ipv6 是的,我可以@Turing85。 它已经启用@MarcSances。 【参考方案1】:在你的 netplan 配置中,尝试添加:
接受-ra:不
示例:
network:
version: 2
ethernets:
ens192:
accept-ra: no
addresses: ...
【讨论】:
谢谢,解决了。显然我的适配器从我的 RA 获得了另一个 ipv6,但奇怪的是问题只发生在 docker 容器内或使用 putty (ssh)。以上是关于无法使用 docker 连接到 ipv6 中的 postgres的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 JDBC 连接到 docker 中的本地 MySQL
无法在本地环境中使用 docker 连接到 cakephp 中的 mysql 数据库