win10 wsl2 docker端口映射不成功

本人docker是安装在wsl2上的

问题

今天在学习elasticsearch,使用以下命令启动 elasticsearch

➜  docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins  -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

启动成功后,

curl localhost:9200一直取不到数据

然后google很久

发现可能是Hyper-v占用了默认端口

在cmd使用一下命令查看

netsh interface ipv4 show excludedportrange protocol=tcp

可以发现目标端口在start Port和End Port之间

这里是我修复过的

image-20200710184722952

解决步骤

管理员运行cmd命令提示符 输入一下指令

  • 先禁用Hyper-V 需要重启计算机
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
  • 重启完毕,同样使用管理员cmd 设置你需要的端口(如果不先禁用Hyper-V 执行该命令无效)
netsh int ipv4 add excludedportrange protocol=tcp startport=2181 numberofports=1
  • 在执行以下命令
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

重启完毕,即可成功绑定端口

在使用命令查看一下绑定端口的状态

netsh interface ipv4 show excludedportrange protocol=tcp

image-20200710184722952

项目开发中,可能会存在其他端口被占用,如果找不到占用的进程,可以尝试看Hyper-v是否占用了。

GitHub 加速计划 / ws / WSL
17.09 K
797
下载
Issues found on WSL
最近提交(Master分支:1 个月前 )
86fa5afa 2 个月前
e899d0b7 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐