WSL2 docker .NET 容器无法绑定到地址 http://[::]:80:地址已在使用中。

3

这个问题有一些类似的问题,但我认为并不完全相同。

昨天我的所有本地开发容器都在各自的:80和:443端口上正常运行。这既是使用docker-compose启动它们,也是从Visual Studio中进行调试模式。

突然今天早上我收到以下错误:

未处理的异常。System.IO.IOException:无法绑定到地址http://[::]:80:地址已在使用中。

顺便提一句,所有这些完全相同的容器和配置此时都在我的其他机器(即笔记本电脑)上运行,因此这是一个特定于机器的问题。

我正在使用WSL2和最新版本的Docker Desktop(使用WSL2引擎)。

昨天我确实进行了最新的Windows累积更新,但在那之后事情仍然正常运行。

我运行了以下命令查看是否有任何东西正在使用端口80:

sudo lsof -i :80

并且没有结果(我认为这意味着端口上没有运行任何内容)。

我运行了以下命令,检查是否还有其他容器正在运行:

docker ps

我已经停止、启动和重新启动了从Docker到整个机器的所有内容。

我的Docker覆盖文件具有以下ASP设置:

- ASPNETCORE_URLS=https://+:443;http://+:80

毫不意外地,移除 http://+:80 解决了我的问题,我的容器使用其 443 端口启动。

我完全不知道可能是什么原因导致这种情况,虽然我可以愉快地使用 :443 端口,但找出问题并解决它会更好。


我们永远不确定,但我猜他们认为这是不相关的话题。我倾向于不在Docker问题上投票关闭或downvote,但是如果涉及到Docker/网络/端口/ Web服务器的问题是“一个实际的、可回答的问题,它是软件开发中独特的”,即使你需要它来完成开发任务?问题是这不是一个ServerFault问题,而且由于太过于编程重心(至少是写作),它可能会在超级用户上被关闭。因此,出于这个原因,我倾向于在这里放过它,但其他人可能不会。 - NotTheDr01ds
感谢您的评论。我看到了很多类似的问题,所以认为这是一个可以通过docker配置等方式解决的问题,而且我之前在这里也见过有人提供帮助。我暂时不会删除它,但如果真的让人们感到不适,我会很乐意删除这个问题。 - Ben Thomson
3个回答

3

我在Docker Desktop 4.13.0和4.18.0上遇到了同样的问题。在我的情况下,问题是由于WSL自动升级到1.2.0版本而出现的。

查看WSL发布版本,我发现此版本现在被标记为预发布版,这使我相信它曾经被设置为latest,但后来被降级为pre-release

检查您的WSL版本:

wsl --version

我使用以下命令升级到最新的预发布版WSL后,已经解决了问题:

wsl --update --pre-release

这将升级您到最新的预发布版本,但值得检查当前可用的稳定版本。可能问题已经得到解决,并且新的稳定版本已经发布。


这对我解决了问题,某些东西“神奇地”将我更新到WSL 1.2,而我并没有请求。我从未使用过预发布的WSL,从未接受过任何东西,最近几天也没有安装或更新任何东西,但某些东西仍然决定将我更新到一个有问题的WSL 1.2预览版本。 - w5l
从1.2.0版本升级到预发布版本1.2.5已经解决了我的问题。希望它不会再出现。如果有一种方法可以升级到最新的稳定版本就好了,但是似乎"wsl --update"不允许降级。 - bart
最新版本似乎也已经解决了我的问题 v1.2.5.0。 - Ben Thomson

0

编辑:请忽略我的答案,因为问题又出现了。

我遇到了这个问题,并通过升级到版本4.18.0(104112),然后运行“恢复出厂设置”来解决它。我不确定仅仅升级是否会修复该错误,因为我没有单独尝试每个步骤。请注意,在新版本的发布说明中没有提到修复此错误。

祝好运!


1
我也遇到了同样的问题...几天前所有东西都停止工作了。进行出厂设置可以解决问题,但是几天后问题又会重新出现。 - yakya

0
我的主机本地 IIS 使用了 80 端口,我通过将默认网站的端口更改为 81 暂时解决了这个问题(直到问题的根本原因被修复)。

enter image description here

编辑:将WSL版本更新到最新版本(目前为1.2.5)后,我解决了这个问题。我通过从Microsoft Store打开WSL应用程序的安装信息并单击“更新”按钮来进行更新。需要注意的是,Microsoft Store目前不区分预发布版本和稳定版本,因此它将自动更新应用程序至其预发布版本,这实际上是导致此错误的原因。从Microsoft Store更新应用程序将再次将其更新为另一个预发布版本,但我会暂时坚持使用Microsoft Store安装,希望他们改变这种行为方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接