编排文件改过之后重启,提示端口已被分配,容器起不来。日志里能对上时间点,这种反而好排。

上一次的容器没有移除仍在占用端口,或同机另一套编排用了相同映射。这一点先确认清楚,后面就不用反复试。

docker ps -a
docker compose down
docker compose up -d
docker ps --format 'table {{.Names}}\t{{.Ports}}'

「Compose 端口冲突」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。改完隔一天再看一次,当场正常不代表能稳住。

处理上按这个顺序:列出占用端口的容器;移除旧容器或改映射;编排文件里避免固定重复端口。

结果对不对很好判断,所有服务正常启动,端口映射与编排文件一致。

作者 9823189