我在 ubuntu 18.04 上成功使用了 postgres docker。现在我更新到了 ubuntu 20.04,突然无法启动 docker,因为弹出了以下错误 - 请注意,此错误在刚启动后一直出现:
$ sudo docker start pg
Error response from daemon: driver failed programming external connectivity on endpoint pg (d188f0712e7079530a6d82eaf8c8770ca0ba8b755e41d87810a691e945725f52): listen tcp4 0.0.0.0:5432: bind: address already in use
Error: failed to start containers: pg
现在,为了查看哪些进程可能正在使用该端口,我尝试了netstat -nlp
但是这给出了无用的行:
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -
表示“没有 PID/程序名称”正在使用该端口。- 是什么原因导致 ubuntu 突然阻止公共 postgres 端口。我可以更新 docker 以使用其他端口或防止 ubuntu 阻止该端口吗?(不破坏任何东西)。
我lsof
发现 postgres 数据库在该地址上运行:但是从 18.04 更新到 20.04 发生了什么变化,为什么突然使用了这个地址?我能找到哪个工具负责这个吗?
$ sudo lsof -i tcp:5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 1285 postgres 3u IPv4 37282 0t0 TCP localhost:postgresql (LISTEN)
pstree -s 1285
(或重新启动后正确的版本)给出以下响应:
systemd───postgres───6*[postgres]
使用以下方法追踪启动进程sudo systemctl list-unit-files --type=service
返回以下内容:
postgresql.service enabled enabled
[email protected] indirect enabled
但这仍然不能让我知道是什么原因导致 postgres 服务开始在我的电脑上运行(或哪个应用程序负责)。