五木齋

  • 博客
  • 留言
  • 关于
  • EN
  1. 首页
  2. Docker
  3. 正文

Windows 10 Docker Desktop 无法绑定特定端口

2023.01.29 2629点热度 0人点赞 0条评论

现象

项目需要用到一个 pgsql 容器,端口映射 -p 55000:5432
Docker Desktop 点击▶️启动容器,显示正常启动,且端口映射成功
但是无法通过宿主机端口+映射端口号访问,而 Docker 内部 IP + 内部端口号访问正常

解决

手动启动容器发现报错:

Docker: error response from daemon: Ports are not available: listen tcp 0.0.0.0/50070: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

也就是宿主机的端口映射实际上没有成功,客户端显示的成功是假的

搞了半天发现似乎是 Hyper-V + winnat 的神秘 bug

在 cmd 中用以下命令解决

net stop winnat
docker start container_name
net start winnat

至于底层原因,我在参考链接2中看到一个说法:

有文章说是Hyper-V会随机保留一些端口,具体干什么我也不记得了,问微软去。反正就是会绑定一组随机端口(是一组不是一个),如果你很幸运,保留范围里面有58526,那你不管怎么折腾都不可能连接上WSA。

我...祝微软越办越好!

参考链接

  1. Ports are not available: listen tcp 0.0.0.0/50070: bind: An attempt was made to access a socket in a way forbidden by its access permissions
  2. 故事会 好好的程序咋就天天报错呢?WinNAT?
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Docker
最后更新:2023.09.07

伏星宇

· 数据分析/摄影/游戏 · 致力于瞎折腾的INFJ

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

分类
  • Docker
  • Python
  • 日常
  • 游戏
  • 运维

归档

  • 2023 年 9 月
  • 2023 年 5 月
  • 2023 年 1 月
  • 2022 年 12 月
  • 2022 年 9 月
  • 2022 年 8 月
  • 2022 年 5 月

分类

  • Docker
  • Python
  • 日常
  • 游戏
  • 运维

COPYRIGHT © 2023 Fu Xingyu. ALL RIGHTS RESERVED. POWERED BY WordPress.

Theme Kratos Made By Seaton Jiang

沪ICP备2023001945号-1

沪公网安备31010702008173号