【发布时间】:2019-04-12 08:24:24
【问题描述】:
我是 Docker 新手,所以请善待,但我正在 Azure 上的 Windows 10 映像上对其进行测试(我知道我可以直接运行它,但我想先在 VM 中尝试)。
我有一个全新的 Windows 10 映像,已在其上安装了 Docker for Windows 2.0.0。 注意:我没有勾选使用 Windows 容器而不是 linux 容器的选项。
安装(并重新启动)后,系统提示我安装 Hyper-V 和容器功能(导致重新启动)。
安装完毕后,我会打开一个管理 PowerShell 窗口来下载 Jenkins:
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
这给了我错误:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: driver failed programming external connectivity on endpoint goofy_lederberg (deaba2deeea0486c92ba8a1a32740295f03859b1b5829d39e39eff0b24613ebf): Error starting userland proxy: Bind for 0.0.0.0:50000: unexpected error Permission denied.
我觉得这很奇怪,因为 50000 不是我期望使用的端口,将其更改为不同的端口 (50001) 会产生相同的错误。
跑步:
netstat -a -n -o
显示端口没有被使用。
如果我从命令中删除 -p 50000:50000 它可以绑定并启动 Jenkins,但我认为它需要此端口映射才能正常工作。
以前的帖子建议停止万维网发布服务,但未安装。
没有其他正在运行的 Docker 容器。
我假设端口正在使用中,或者某些东西正在停止端口映射。
假设用户有权从他们的终端创建端口绑定,除了 netstat 之外是否还有其他技术可以确定是否绑定了某个端口 - 无论是 docker 自己的检查过程内部的东西还是主机操作系统级别的东西?
【问题讨论】:
-
我也遇到了这个问题,只能通过重启解决。对于像 50000 及以上这样的高数量端口来说,这似乎很奇怪。通常 40000 似乎和 8080 一样好用,等等。在我的情况下,我尝试了以下命令的几种变体:“docker run -p "50000:50000" hello-world" 在验证端口 50000 上没有监听并得到相同的结果后端口错误:50000、50001、50002、49999、49998。而端口 49000 和 8080 工作成功。重新启动后,我能够毫无问题地运行所有命令。 (我没有改变我启动 shell 的方式)
-
另外,我在笔记本电脑上使用的是 windows 10 pro v1809,而不是 azure。
-
我不清楚,但问题总是在重新启动后再次出现。通常它会在之后工作一两次,但最终我又开始收到错误。
-
下次尝试只重启 docker 引擎。听说一些与 Windows 快速启动过程相关的网络错误。
-
好主意,我尝试从任务托盘重新启动 Docker,但仍然没有成功。刚才必须重启才能重置。
标签: azure docker azure-virtual-machine