Docker使用笔记

问题:

我在window是环境下 宿主机安装了postgres 16,启动后并成功创建链接,

然后用docker 部署了 posgres18 ,启动后,指定端口 5432:5432. 也启动成功了。

通过navicat 链接 localhost:5432服务,

连接到了postgres16. 关闭 postgres16 服务后,

再次链接链接到了 postgres18 .这是为什么两个服务用一个端口还不冲突?

回答:

这是一个非常典型、而且很多人在 Windows + Docker + PostgreSQL 场景下都会困惑的问题 。

结论先行,然后我用端口、网络、进程层面给你一次性讲清楚

一句话结论(核心原因)

Docker 容器里的 PostgreSQL 并不是直接占用 5432 端口的
真正占用 5432 的只有一个进程:要么是宿主机的 Postgres,要么是 Docker Desktop 的端口转发代理

所以你看到的现象是:

  • 宿主机 Postgres 16 运行时 → 它抢占 5432

  • Docker Postgres 18 运行着,但 5432 转发被"挡住"

  • 你连 localhost:5432 → 实际连的是 宿主机 Postgres 16

  • 关掉宿主机 Postgres 16 → 5432 空出来

  • Docker 的端口映射立即生效 → 你连到了 容器里的 Postgres 18

工程级总结(重点)

  • 端口 不可能 真正被两个进程同时监听

  • Docker 容器并不直接监听宿主端口

  • Windows Docker Desktop 有端口转发中间层

  • 你看到的是端口归属切换,不是共存

相关推荐
箓维21 分钟前
TCP Socket的进阶实现
网络·笔记·tcp/ip
二哈赛车手25 分钟前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
是枚小菜鸡儿吖29 分钟前
Home Assistant跨品牌智能家居教程:Docker部署、米家接入、vivo桥接与远程访问
docker·容器·智能家居
星恒随风1 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
智学AI3 小时前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
螺蛳粉 螺蛳粉3 小时前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
叼烟扛炮3 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
weixin_448119943 小时前
Datawhale Jev Cookbook 202610 笔记5
笔记
wefg14 小时前
【Docker】镜像相关指令
运维·docker·容器
一木 之林4 小时前
Dify学习笔记 04 · 检索底座:Embedding、Rerank与向量数据库(第46-54集)
笔记·学习·embedding·dify