解决docker启动容器时,端口被占用错误

本文介绍了解决Win10环境下Hyper-V导致的特定端口不可用问题,通过调整应用程序端口设置及禁用Hyper-V的方法成功启动了Kafka容器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在启动本机的kafka容器时, 报了如下错误:

docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:9091: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

本机的环境是:

win10 64
docker desktop 3.2.1
机器有启用hyper-v (罪魁祸首)

在这里插入图片描述

使用netstat -ano | findstr 9091排查是否有程序占用了9091端口, 结果为没有.

在此之前, idea启动tomcat时, 以debug模式会报, debug的端口被占用, 以run模式启动, 会报1099端口被占用. 当时发现如果重启电脑, 直接开启idea, 可以正常启动(怀疑是被什么占用了, 和它抢速度…)

google之后发现, hyper-v会保留部分tcp端口, 使用命令:

netsh interface ipv4 show excludedportrange protocol=tcp

可以得到:

协议 tcp 端口排除范围

开始端口    结束端口
----------    --------
      5357        5357
      6821        6920
      6944        7043
      7118        7217
      7218        7317
      8201        8300
      9055        9154
      9169        9268
      9330        9429
      9783        9882
      9883        9982
     13628       13727
     13954       14053
     31082       31082
     50000       50059     *

* - 管理的端口排除。

赫然发现9091在排除范围之内, 于是修改启动命令(主要是修改端口):

docker run -d --name kafka --publish 9155:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=10.123.2.22:2181 --env KAFKA_ADVERTISED_HOST_NAME=10.123.2.22 --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka

容器可以正常启动.

我这种是绕过了被保留的端口, 如果你的程序一定要使用范围内的端口, 可以参考以下链接, 其介绍了配置保留端口的方式. 基本上是:

1.暂时关闭hyper-v

2.配置端口

3.恢复hyper-v

引用链接:

ports-are-not-available-listen-tcp-0-0-0-0-50070-bind-an-attempt-was-made-to <-此链接是我解决问题的入口

解决 win10 hyper-v 保留端口占用问题 <-此链接介绍了配置方式

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值