本人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之间
这里是我修复过的
解决步骤管理员运行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项目开发中,可能会存在其他端口被占用,如果找不到占用的进程,可以尝试看Hyper-v是否占用了。