docker启动容器提示占用

docker启动容器提示占用

启动 Docker etcd 容器时,发现端口 2379 和 2380 被占用,但 `netstat` 命令查不到任何信息。经过排查,发现这是由于 Windows 的 NAT(网络地址转换)服务出现问题导致的。解决方法非常简单,只需要通过命令停止并重新启动 Windows NAT 服务(`net stop winnat` 和 `net start winnat`),问题即可解决,容器可以正常启动。

 次点击
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

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

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