运行Docker for Windows,暴露端口时出错

我知道有很多关于在Windows上运行Docker的问题,但是这个问题是关于在Windows上运行全新的Docker for Windows。
在我的情况下,我正在使用Windows 10 Pro 64位。 根据网站这个版本应该被支持。
我一直在关注我在这里find的教程: https : //prakhar.me/docker-curriculum/
我也尝试遵循当然的官方指南: https : //docs.docker.com/docker-for-windows/

在这两个教程中,当尝试使用-P参数分配端口或尝试指定端口时,都会得到相同的错误消息-p 8080:5000

在官方指南中运行docker run -d -p 80:80 --name webserver nginx并获取:

C:\ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe:来自守护程序的错误响应:驱动程序无法编程端点webserver上的外部连接(f9946544e4c6ad2dd9cb8cbccd251e4d48254e86562bd8e6da75c3bd42c7e45a):启动userland代理时出错:mkdir /port/tcp:0.0.0.0: 80:tcp:172.17.0.2:80:input/输出错误。

继非官方指导我运行docker run -p 8888:5000 prakhar1989/catnip并得到基本相同的错误:

C:\ Program Files \ Docker \ Docker \ Resources \ bin \ docker.exe:来自守护程序的错误响应:驱动程序无法编程端点上的外部连接focused_swartz(48a0c005779c6e89bf525ead2ecff44a7f092495cd22ef7d19973002963cb232):启动userland代理时出错:mkdir /port/tcp:0.0.0.0: 8888:tcp:172.17.0.2:5000:input/输出错误。

如果我不尝试分配一个端口的容器将运行,但是我不知道如何访问它。

我正在运行的docker版本:

  • Docker版本1.12.3,版本6b644ec`
  • docker组成版本1.8.1,build立004ddae`
  • docker-machine.exe 0.8.2版,build e18a919`

任何帮助将非常感激。 谢谢。

这是由端口编号冲突引起的:github问题在这里https://github.com/docker/compose/issues/3277

本质上港口正在使用! 重置工作的原因是因为它擦除了其他映射。

这是一个新的转折。

最新的Windows 10更新(Fall Creators Update,2017)具有新的“function”。 它会自动启动上次关机时正在运行的任何应用程序。

这重构了Docker for Windows的状态不佳。 这使得这些港口似乎被别的东西所使用 – 这是它本身的幽灵。 这解释了为什么即使我停止/启动我的容器,甚至重新启动,这些端口仍然在使用中!

这种情况下的解决scheme是简单地重新启动Docker守护进程。

为防止在下次关机后出现这种情况,请不要使用关机button。 改为input:

 shutdown /s /t 0 

这绕过了新function。

在这个post中看到Jason [MS]的回答:

https://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_perf-insiderplat_pc/programs-autostart-after-boot-in-windows-10-fall/09dd8d3e-7b36-45d1-9181-6587dd5d53ab

这里有一个人的解决方法(从这个线程的末尾 – 没有自己尝试过):

http://www.icttoolbox.nl/info/stop-windows-10-creator-fall-reopening-programs-reboot/