docker启动容器提示占用

docker启动容器提示占用

Docker 启动 etcd 容器时提示端口被占用,但 `netstat` 命令查询无结果。经排查,问题根源在于 Windows 的 NAT 服务(WinNAT)出现异常。WinNAT 负责 Docker 容器的端口映射和网络路由。 解决方法是: 1. 停止 WinNAT 服务:`net stop winnat` 2. 启动 WinNAT 服务:`net start winnat` 重启服务后,即可正常启动 etcd 容器。

 次点击
3 分钟阅读

错误现象

在使用docker启动etcd容器的时候、端口映射为2379:2379、启动的时候报错端口被占用

(HTTP code 500) server error - Ports are not available: exposing port TCP 0.0.0.0:2380 -> 127.0.0.1:0: listen tcp 0.0.0.0:2380: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

输入netstat -ano | findstr "2379" 查询、但是没有输出。

错误原因

通常是由于Windows网络地址转换(NAT)服务出现问题导致的

  • Windows NAT服务:Windows NAT(网络地址转换)服务,也称为WinNAT,是Windows中负责管理端口映射和网络路由的组件。

  • Docker容器的网络通信依赖于WinNAT服务来进行端口映射。

解决步骤

net stop winnat  // 停止WinNAT服务

net start winnat // 重新启动WinNAT服务

PowerShell

执行之后、重新启动容器、不再报错

© 本文著作权归作者所有,未经许可不得转载使用。