【问题标题】:Docker port bind fails. Why a "permission denied"?Docker 端口绑定失败。为什么“权限被拒绝”?
【发布时间】:2019-01-16 12:27:11
【问题描述】:

我正在尝试在 Windows 10 Pro(最新)下启动 jenkinsci/blueocean 容器。我正在运行一个脚本:

docker run ^
  --rm ^
  -u root ^
  -d ^
  -p 8080:8080 ^
  -p 50000:50000 ^
  -v D:/docker/jenkins/volumes/jenkins-data:/var/jenkins_home ^
  -v D:/docker/jenkins/volumes/docker.sock:/var/run/docker.sock ^
  -v D:/docker/jenkins/volumes/home:/home ^
  jenkinsci/blueocean

此操作失败并显示以下消息:

docker: Error response from daemon: 
  driver failed programming external connectivity on endpoint elastic_kare: 
  Error starting userland proxy: 
    Bind for 0.0.0.0:50000: unexpected error Permission denied

如果我省略端口 50000 的绑定,它可以正常工作,但我需要 50000 端口与主机上的从属通信。

将 50000 绑定到另一个端口没有帮助。根据netstat -an,该端口未使用。尝试以管理员身份运行脚本没有帮助。

这可能是什么问题?

更新:我重新启动了我的笔记本电脑并将 Docker Desktop 更新到了最新版本。

update2:重新启动笔记本电脑后,我也重新启动了 Docker(多次)。无济于事。

update3:关闭 Windows 防火墙并没有解决问题。

【问题讨论】:

  • 重新启动笔记本电脑后,您可能还需要重新启动 docker .. 恕我直言,这是一项肮脏的工作。另外,尝试以管理员身份运行它吗?我说这是一个很长的镜头。最后,您可以使用其他端口(例如 48000)而不是 50000 吗?尝试其他组合。 50000:48000 或 48000:50000 或 48000:48000
  • 试过了(几次),没用。
  • 是带防火墙的机器吗?是不是有什么东西阻塞了那个端口?
  • 防火墙也检查了,没有结果。

标签: windows docker jenkins


【解决方案1】:

如果你在 Windows 上运行 Docker,那么它将使用 Hyper-V——我发现 Hyper-V 保留了一堆端口——你可以通过运行这个来找到答案:

netsh interface ipv4 show excludedportrange protocol=tcp

在我的机器上,我可以看到它保留了端口 50000。为了释放这个端口,我禁用了 Hyper-V:

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

重启后,我保留了 50000 端口:

netsh int ipv4 add excludedportrange protocol=tcp startport=50000 numberofports=1

然后再次启用 Hyper-V:

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

当它恢复时,我可以在 Windows 上的 Docker 中运行 Jenkins:

docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts

【讨论】:

  • 很好的解释,特别是对于 hyper-v 相关端口的保留。谢谢。
  • 哇!最后,我明白了这个该死的权限被拒绝错误!
【解决方案2】:

我遇到了同样的问题,在更改 docker 的端口后,它得到了解决。我使用的是 Hyper-V 保留的端口 50062。我通过发出以下命令来确认这一点。

netsh interface ipv4 show excludedportrange protocol=tcp

Start Port    End Port

 36259       36259
 49675       49774
 49875       49974
 50000       50059
 50060       50159
 50160       50259
 50260       50359
 50360       50459
 50614       50713

* - Administered port exclusions.

更改端口后,我能够启动容器。

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 2022-01-16
    • 2012-09-04
    • 2020-10-23
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多