You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker绑定0.0.0.0:80失败,端口已占用问题求助

解决方案:Docker 80端口绑定失败(无进程占用但报错)

1. 排查Docker内部网络残留冲突

Docker的网络命名空间可能存在隐藏的端口占用残留,即使容器已删除也会影响端口绑定:

  • 列出所有Docker网络:docker network ls
  • 检查每个网络的端点详情,查找异常占用:docker network inspect <network-name>,重点查看Containers字段是否有无效条目
  • 删除可疑网络:docker network rm <network-name>

2. 强制清理所有Docker残留资源

执行彻底清理命令,清除所有容器、未使用网络及悬空资源:

# 停止所有容器(含创建状态)
docker stop $(docker ps -aq)
# 删除所有容器
docker rm $(docker ps -aq)
# 强制删除所有未使用网络
docker network prune -f
# 清理悬空镜像(可选)
docker image prune -f

3. 检查UDP 80端口占用

你之前仅排查了TCP端口,报错可能源于UDP 80被占用:

netstat -ulpn | grep 80

若发现占用进程,执行kill -9 <PID>终止;或临时修改端口映射规避冲突。

4. 检查宿主机自动绑定80的服务

宿主机上的Nginx、Apache等服务可能在启动时抢占80端口,即使当前未运行也会留下缓存冲突:

  • 列出相关服务:systemctl list-unit-files | grep -E '(nginx|apache|httpd)'
  • 禁用不必要的服务:systemctl disable --now nginx

5. 修改docker-compose.yml端口映射

临时规避端口冲突,调整服务的端口映射规则:

services:
  shop:
    ports:
      - "8080:80"  # 将宿主机80端口替换为8080

修改后执行docker-compose up -d验证是否能正常启动。

6. 重置Docker网络配置

若以上操作无效,重置Docker网络彻底清除残留:

# 停止Docker服务
systemctl stop docker
# 删除所有网络相关文件
rm -rf /var/lib/docker/network
# 重启Docker服务
systemctl start docker

注:此操作会删除所有自定义网络,需重新创建业务所需网络。


内容的提问来源于stack exchange,提问作者that guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:40:46