Windows11基于 WSL2启动 docker 后报错如下(需要注意有时候使用启动命令会报错,但是 restart 命令 docker 可以运行,对应服务无法访问)
Bind: An attempt was made to access a socket in a way forbidden by its access permissions.
观察错误发现占用的信息为2345,从 windows 和 wsl 中分别查看端口是否被占用:
netstat -aon|findstr "2345"
netstat -tunlp | grep 2345
均显示没有被占用,这可能是由于协议 tcp 使用的动态端口问题导致,可以使用管理员权限在 powershell 或者 cmd 中执行下列命令查看端口是否在动态范围中:
动态范围可能是由于 hyper-v 的原因修改过起始端口,所以可能会发现关闭 hyper-v 后没有占用的情况的现
netsh int ipv4 show dynamicport tcp
如在,修改动态范围,之后使用的时候避开这些端口即可。
netsh int ipv4 set dynamicport tcp start=49152 num=16384
重启电脑即可生效。