正在运行Docker for Windows,公开端口时出错
我知道在windows上运行Docker有很多问题,但是这个问题是关于在windows上运行全新的Docker for windows。正在运行Docker for Windows,公开端口时出错,docker,docker-for-windows,Docker,Docker For Windows,我知道在windows上运行Docker有很多问题,但是这个问题是关于在windows上运行全新的Docker for windows。 就我而言,我使用的是64位Windows 10 Pro。根据网站要求,应支持此版本。 我一直在遵循我在这里找到的教程: 当然,我也试着遵循官方指南: 在这两个教程中,当尝试使用-p参数分配端口或尝试指定端口-p 8080:5000时,我都会收到相同的错误消息: 在官方指南中,我运行docker run-d-p80:80——命名webserver nginx,
就我而言,我使用的是64位Windows 10 Pro。根据网站要求,应支持此版本。
我一直在遵循我在这里找到的教程:
当然,我也试着遵循官方指南: 在这两个教程中,当尝试使用
-p
参数分配端口或尝试指定端口-p 8080:5000
时,我都会收到相同的错误消息:
在官方指南中,我运行docker run-d-p80:80——命名webserver nginx
,并获得:
C:\Program Files\Docker\Docker\Resources\bin\Docker.exe:守护进程的错误响应:驱动程序未能在端点Web服务器上对外部连接进行编程(F9946544E4C6AD2DD9CB8CBCCD251E4D4825E86562BD8E6DA75C3BD42C7E45A):启动userland代理时出错:mkdir/port/tcp:0.0.0.0:80:tcp:172.17.0.2:80:输入/输出错误
按照非官方指南,我运行了docker run-p 8888:5000 prakhar1989/catnip,得到了基本相同的错误:
C:\Program Files\Docker\Docker\Resources\bin\Docker.exe:守护进程的错误响应:驱动程序未能在以端点为中心的\u swartz上编程外部连接(48a0c005779c6e89bf525ead2ecff44a7f092495cd22ef7d19973002963cb232):启动userland代理时出错:mkdir/port/tcp:0.0.0:8888:tcp:172.17.0.2:5000:输入/输出错误
如果我不尝试分配一个端口,容器将运行,但我不知道如何访问它
我正在运行的docker版本:
- Docker版本1.12.3,构建6b644ec`
- docker compose版本1.8.1,构建004ddae`
- docker-machine.exe版本0.8.2,版本e18a919`
任何帮助都将不胜感激。谢谢。这是由端口编号冲突引起的:此处是github问题 基本上,端口正在使用中!重置之所以有效,是因为它删除了其他映射。这里有一个新的转折点 上一次Windows 10更新(2017年秋季创建者更新)有一个新的“功能”。它会自动启动上次关机时正在运行的所有应用程序 这将使Docker for Windows重新处于错误状态。这使得这些端口似乎被其他东西使用了——这是它自己的幽灵。这解释了为什么即使我停止/启动容器,甚至重新启动,这些端口仍在使用中 这种情况下的解决方案是简单地重新启动Docker守护进程 为了防止下次关机后出现这种情况,请不要使用关机按钮。请键入以下内容:
shutdown /s /t 0
这绕过了新功能
请参见本帖中Jason[MS]的答案:
这里有一个家伙的解决方法(从这个线程的末尾-我自己还没有尝试过):
1)停止所有正在运行的容器docker Stop$(docker ps-a-q)
2) 停止机器上的Docker并重新启动它
然后运行所需的命令。这将解决问题。重新启动Docker守护进程暂时解决了此问题,但为了最终解决此问题,我必须禁用Windows 10快速启动功能,这是@314描述的功能 要禁用Windows 10快速启动,请进入控制面板>电源选项>选择电源按钮的功能>更改当前不可用的设置>取消选中打开快速启动(推荐),然后单击保存更改
对于Linux-Debian用户 只有当您知道是否要停止所有容器时,才使用docker stop$(docker ps-a-q)。。。。如果是,请运行docker rm$(docker ps-a-q)移除容器 然后停止docker守护程序-systemctl停止docker 然后启动docker守护程序-systemctl启动docker 还要验证docker守护程序是否已启动-服务docker状态
完成上述所有步骤后,您应该会没事的。…尝试停止docker并在管理员模式下再次启动它。启动后,也可以在管理员模式下打开power shell。 因为错误显示为“mkdir”,所以这可能会解决您的问题。我不确定,但它对我有效。
在使用-P的情况下,一旦-P随机选择端口,端口冲突就不会成为错误的原因。这个错误对我来说不是很友好,但是因为我在上面看到了mkdir这个词,我想这可能是一个权限错误,这就是为什么我在管理员模式下重新启动docker,在管理员模式下启动power shell。如果是在windows操作系统中,请确实重新启动docker
这为我解决了这个问题我尝试了所有关于这个问题的建议:杀死所有容器,重新启动Docker桌面,禁用“快速启动”,重新启动我的计算机,确保“实验功能”被禁用。这些东西都不管用 我终于让它运行起来了。下面是一些你可能想尝试的东西(因为我不确定到底是什么修复了它)
我以前在10号窗口也遇到过同样的问题。
重新启动docker,如果您在Visual Studio 2019中遇到此问题,它将起作用: 根据,VS团队正在为16.5版本中的此问题准备修复程序,同时,您可以在launchSettings.json中添加属性
“publishAllPorts”:true
,例如:
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:44374", #<== Set a fixed port
"environmentVariables": {
"ASPNETCORE_URLS": "https://+:44374;https://+:5000",
"ASPNETCORE_HTTPS_PORT": "44374"
},
"publishAllPorts": true, #<== This is equivalent to the -P flag in 'docker run'
"useSSL": true
}
“Docker”:{
“commandName”:“Docker”,
“启动浏览器”:正确,
“launchUrl”:“{Scheme}://{Servic”