Docker端口绑定失败。为什么要“拒绝许可”?

时间:2019-01-16 12:27:12

标签: windows docker jenkins

我正在尝试在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绑定到另一个端口无济于事。根据{{​​1}},该端口未使用。尝试以管理员身份运行脚本无济于事。

这里可能是什么问题?

更新:我重新启动了笔记本电脑,并将Docker桌面也更新为最新版本。

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

update3:关闭Windows防火墙并不能解决问题。

2 个答案:

答案 0 :(得分:6)

如果您在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

答案 1 :(得分:1)

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

netsh接口ipv4显示排除的端口范围协议= tcp

Start Port    End Port

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

管理的端口排除项。

更改端口后,我可以启动容器。