
编辑:我很遗憾地说,昨天和今天之间的问题“自己”消失了,没有我做任何事情.这里要学习很好的非确定性课程……
额外的乐趣:“无法绑定IPv6套接字”错误仍然出现在错误日志中,所以这可能首先不是问题.
我有一个以前运行的docker PGSQL图像的问题.直到昨天没有灵感的重建(:-D),我在过去的5个月里成功使用了这个版本.
我的系统:
> Ubuntu 17.04 64b
> PGSQL 9.6.4
> Docker版本17.11.0-ce,构建1caf76c
>我将主机端口5433映射到容器端口5432
问题(来自PGSQL日志的片段):
…
LOG: could not bind IPv6 socket: Cannot assign requested address
HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
…
这是ss告诉我的(当容器运行时,显然):
$docker exec -it db ss -atune
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp ESTAB 0 0 127.0.0.1:45876 127.0.0.1:45876 uid:999 ino:147509 sk:00000001 <->
tcp LISTEN 0 128 127.0.0.1:5432 *:* uid:999 ino:147500 sk:00000002 <->
我已经清理了所有的docker容器/图像,我重新安装了docker,没有任何帮助.谁可能在容器中使用5432端口?
就此而言,我是否正确阅读,PGSQL抱怨已经在docker容器中使用了5432端口?
即使你没有解决方案,如何继续调试这个基本想法将是一个很大的帮助.
编辑:
postgres.docker文件
FROM postgres:9.6.4
ADD bin/postgres-setup.sh /docker-entrypoint-initdb.d/postgres-setup.sh
RUN chmod 755 /docker-entrypoint-initdb.d/postgres-setup.sh && \
apt-get update && \
apt-get install -y --no-install-recommends postgresql-plpython3-9.6 python3-pip postgresql-9.6-pldebugger && \
pip3 install pyexcel pyexcel-xls pyexcel-xlsx pyexcel-xlsxw
由于pgsql默认只侦听localhost,当它在docker容器中运行时,我们有端口映射配置,外部API无法连接到pgsql服务器.
解决方案是允许pgsql监听所有IP地址:
>连接到db容器shell:$docker exec -ti db bash
>更改配置文件/var/lib/postgresql/data/postgresql.conf以允许pgsql监听所有IP:listen_addresses =’*’
转载注明原文:PostgreSQL docker:“无法绑定IPv6套接字:无法分配请求的地址” - 乐贴网