运行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]的回答:
这里有一个人的解决方法(从这个线程的末尾 – 没有自己尝试过):
http://www.icttoolbox.nl/info/stop-windows-10-creator-fall-reopening-programs-reboot/