Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
docker:驱动程序在端点Web服务器上编程外部连接失败_Docker - Fatal编程技术网

docker:驱动程序在端点Web服务器上编程外部连接失败

docker:驱动程序在端点Web服务器上编程外部连接失败,docker,Docker,我试图运行一个docker示例 这是我的命令: docker run -d -p 80:80 --name webserver nginx 但我得到了这个错误: docker: Error response from daemon: driver failed programming external connectivity on endpoint webserver (bd57efb73c738e3b271db180ffbee0a56cae86c8193242fbc02ea805101df

我试图运行一个docker示例

这是我的命令:

docker run -d -p 80:80 --name webserver nginx
但我得到了这个错误:

docker: Error response from daemon: driver failed programming external connectivity on endpoint webserver (bd57efb73c738e3b271db180ffbee0a56cae86c8193242fbc02ea805101df21e): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).

如何修复此问题?

从您的错误消息中,
EADDRINUSE
表示端口80已在docker VM上使用,或者可能直接在您的笔记本电脑上使用。您可以停止在该端口上运行的任何操作,也可以更改Docker命令中使用的端口。要更改为外部端口8080,请使用:

docker run -d -p 8080:80 --name webserver nginx

我的一个容器也有同样的问题。我尝试了所有的方法,但没有任何效果,我尝试了以下方法,并成功地再次启动了容器

 sudo service docker stop
 sudo rm /var/lib/docker/network/files/local-kv.db
 sudo service docker start
如果您是我未使用的端口,请尝试重新启动docker。这通常对我有用


最近,这个问题在Windows上开始频繁出现。您可以尝试重新启动docker,也可以在Windows关闭之前手动停止docker-docker在重新启动时完全启动。2018年7月24日docker问题已公开,更多详细信息请访问windows用户:

在Windows系统上,CTRL+C不会停止容器。那么,第一种呢 按住CTRL+C键返回提示(或打开另一个shell),然后键入 docker container ls列出正在运行的容器,后跟docker 容器停止以停止容器。 否则,当您尝试 在下一步中重新运行容器

我也遇到了同样的问题,我认为使用CTRL+C停止容器,但事实并非如此,上面的任何答案都有效,因为它们都停止容器,重新启动docker或明确停止容器

我更喜欢:

docker container ls #list containers running
docker stop [container id] #replace [container id] with the container id running

这似乎是windows“快速启动”的不兼容问题,如下所述:(只需重新启动docker服务),它可能会工作

这是由于与Docker和fastboot不兼容造成的。您可以确保在关闭Windows之前停止所有容器,也可以通过执行以下操作在Windows的电源设置中禁用fastboot:

CTRL+R>“powercfg.cpl”>“选择电源按钮的功能”>“更改当前不可用的设置”>取消选择“打开快速启动”

如果您愿意,也可以在powershell中使用单个命令禁用fastboot:


Set ItemProperty'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power\'-Name HiberbootEnabled-Value 0
停止所有正在运行的容器
docker ps-a-q

停止机器上的Docker并重新启动它。

在我的例子中,端口80是web服务器的默认端口,因此它受到保护。我将绑定更改为端口60:8080,以确保没有更深层次的问题。通过将绑定更改为其他端口,我可以执行docker运行,并在浏览器中点击它,然后尝试重新启动docker服务。它99%的时间都能工作

service docker restart
如果未按预期工作,请尝试重新启动电脑,然后使用上述命令重新启动docker服务

如果上述任何一项都不起作用,请尝试将暴露的端口更改为另一个应能起作用的未使用端口

docker run -d -p 81:80 --name webserver nginx
请尝试以下命令:

sudo service docker restart
docker stop <container id> 

如果没有帮助,请重新启动服务器。

当我第一次制作docker简易web应用程序时,我也遇到了同样的问题

简单地说,您可以尝试以下步骤来解决问题,并且能够详细了解您遇到问题的原因

步骤1:使用以下命令检查所有正在运行的容器:

docker ps
第2步:找出在同一端口上运行的容器的容器id,您正试图访问该端口。

步骤3:使用以下命令停止在同一端口上运行的容器:

sudo service docker restart
docker stop <container id> 
步骤5:再次尝试使用端口映射在同一端口上运行容器

docker run -p 8080:8080 DockerID/projectName

现在检查端口80上有什么-
sudo ss-tulpn | grep:80

您可能正在运行apache2。 您可以查看它-
sudo服务apache2状态
如果是这样-
sudo服务apache2 statop
对我来说,一个简单的

ddev poweroff

已修复此问题。

在Windows中,如果在运行上述命令后未找到网络,您将在
C:\ProgramData\Docker\network\files
Do
sudo Docker system prune
中找到此文件。然后docker compose应该运行良好。这救了我:)太棒了。。。我尝试了一切,删除了进程和端口,删除了缓存等等,但什么都没用。。。您是救世主这是最好的起点,尤其是当您有理由确定某个端口未被使用时。有时重新启动计算机也会有帮助。在您的情况下,可能会进行
docker系统修剪--卷
也可能会有帮助,而无需重新启动服务!!!当心!!!:它会移除很多东西,所以首先用
docker ps-a
docker images-a
检查你的容器,以确保你不会丢失一些重要的东西(也就是不可恢复的东西)。此修剪将从驻留在VM上的有限大小磁盘(使用Docker Desktop for Windows或macOS)中释放空间。这通常是Docker Desktop开始出现高度不可预测行为的原因。您可以通过运行以下命令获取Docker上运行的端口的进程ID-sudo lsof-i tcp:然后,一旦您获得了进程ID并可以使用-kill-9将其杀死,现在您在端口上运行的进程将被关闭,您可以再次启动Docker那就好了,这对我来说很有效。对于一个过去运行良好的容器,我也遇到了同样的问题。这是在修改防火墙设置后发生的。整个错误消息中有一个“iptables failed”。在阅读了smishra的评论后,我决定只启动和停止(=重新启动)docker,而不删除那里提到的文件,这对我来说很有效。然后我读了你的评论,意识到我基本上就是这么做的。在我的案例中,它没有明确提到出现问题的端口,但由于我公开了一系列端口(-p 1000-2000:1000-2000),我怀疑这是否是重新启动Dock的原因