> 技术文档 > 【Docker】 端口占用问题:Windows 系统 80 端口无权限绑定详细解决教程--Error response from daemon: Ports are not available:

【Docker】 端口占用问题:Windows 系统 80 端口无权限绑定详细解决教程--Error response from daemon: Ports are not available:


一、错误现象

运行Docker容器时出现以下错误:

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:80 -> 127.0.0.1:0: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

此错误表明 80 端口被系统或其他进程占用,或存在权限限制。


二、解决方法一览(请按照个人情况对照详细步骤进行处理)

  1. 管理员身份运行各种指令

  2. 重启 Windows NAT 网络驱动

  3. 检查并释放被占用的 80 端口

  4. 临时更换 Docker 映射端口


三、详细步骤

1. 管理员身份运行各种指令

Docker Desktop 采用管理员身份运行;CMD或者Powershell利用管理员身份运行。

2. 重启 Windows NAT 网络驱动

        Docker 依赖 Windows NAT 网络驱动,重启可释放被锁定的端口。

操作步骤:

  • 以管理员身份打开命令提示符(CMD 或 PowerShell)。
  • 依次执行以下命令:
  • net stop winnatnet start winnat
  • 重启 Docker 服务后重试。

3. 检查并释放被占用的 80 端口

3.1 查找占用 80 端口的进程

  • Win + R,输入 cmd 打开命令提示符。
  • 执行以下命令:
    • netstat -ano | findstr :80
  •  输出示例: 
    • TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
  • 最后一列为 PID(进程 ID)此处 PID=4 表示被系统进程占用,若不为4则未系统进程占用。

    3.2 终止占用进程

    ① 处理非系统进程占用(PID不为4)
    • 如果 PID 不是 4(如 PID=1234):
    • 输出示例:
      • TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1234
    • 则输入代码终止进程
      • taskkill /PID 1234 /F
    • 强制终止进程树(谨慎操作)
      • taskkill /PID 1234 /T /F
    ② 处理系统进程占用(PID=4)
    • 查看任务管理器 > 详细信息 发现被System系统进程占用
    • 命令提示符中输入以下代码,查看当前的http服务状态
      • netsh http show servicestate

             例如我的进程就被ID:5904、2173、12528、22556占用。

    • 在任务管理器找到上面提到的进程,结束进程
    • 注意若出现桌面栏消失,需要重启Windows资源管理器

    4. 临时更换 Docker 端口映射

    若需快速验证容器功能,可更换端口映射:

    docker run -p 8080:80 your_image

    将宿主机的 8080 端口映射到容器的 80 端口。

    持久化配置:若需长期使用 80 端口,建议彻底关闭冲突服务或调整服务端口。


    四、成功运行

    通过以上步骤,可解决 99% 的 Windows 系统 Docker 端口绑定权限问题。

    经过上述解决再次运行 Docker 即可成功运行✅


    转载吱一声~

    电影剧情介绍