我在Mac上。尝试运行docker示例请遵循以下文档:https://docs.docker.com/docker-for-mac/ 这是我的命令:
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).
需要帮助。
答案 0 :(得分:43)
从您的错误消息中,EADDRINUSE
表示端口80已在docker VM上使用,或者可能直接在您的笔记本电脑上使用。您可以停止在该端口上运行的任何内容,也可以更改Docker中使用的端口命令。要更改为外部端口8080,请使用:
docker run -d -p 8080:80 --name webserver nginx
答案 1 :(得分:23)
尝试重新启动docker。通常对我有用。
答案 2 :(得分:5)
第一次,当我制作了一个docker简单的Web应用程序时,我也遇到了同样的问题。
您只需尝试以下步骤即可解决问题,并能够详细了解遇到问题的原因。
步骤1:使用以下命令检查所有正在运行的容器:
docker ps
步骤2:找出您要访问的同一端口上运行的容器的容器ID。 enter image description here
步骤3:使用以下命令停止在同一端口上运行的容器:
docker stop <container id>
第4步:再次构建容器:
docker build -t DockerID/projectName .
第5步:再次尝试使用端口映射在同一端口上运行容器。
docker run -p 8080:8080 DockerID/projectName
答案 3 :(得分:4)
最近,此问题在Windows上开始发生很多。您可以尝试重新启动docker,也可以在Windows关闭之前手动停止docker-docker在重启时干净地启动。在2018年7月24日的docker问题上已经开放,可以在https://github.com/docker/for-win/issues/1967
中找到更多详细信息。答案 4 :(得分:4)
尝试重新启动docker服务。它有99%的时间有效。
service docker restart
如果这没有按预期工作,请尝试重新启动计算机,然后使用上述命令重新启动docker服务。
如果以上方法均无效,请尝试将裸露的端口更改为其他应使用的未使用的端口。
docker run -d -p 81:80 --name webserver nginx
答案 5 :(得分:3)
我的一个容器遇到了同样的问题。我尝试了所有的东西,但是当没有任何效果时,我尝试了以下内容并成功启动了容器
- sudo service docker stop
- sudo rm /var/lib/docker/network/files/local-kv.db
- sudo service docker start
答案 6 :(得分:1)
这似乎是Windows“快速启动”的不兼容问题,如下所述:(只需重新启动docker服务),它可能会起作用。
https://github.com/docker/for-win/issues/2722
这是由于与Docker和fastboot不兼容引起的。您可以确保关闭Windows之前停止所有容器,也可以通过执行以下操作在Windows的电源设置中禁用快速启动:
CTRL+R > "powercfg.cpl" > "Choose what the power buttons do" > "Change settings that are currently unavailable" > Deselect "Turn on fast start-up"
如果您愿意,也可以在powershell中使用单个命令禁用快速启动:
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power\' -Name HiberbootEnabled -Value 0
答案 7 :(得分:1)
尝试以下命令:
sudo service docker restart
如果没有帮助,请重新启动服务器。
答案 8 :(得分:0)
windows用户:docker description
在Windows系统上,CTRL + C不会停止容器。所以,第一种 CTRL + C返回提示(或打开另一个外壳),然后键入 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
答案 9 :(得分:0)
然后停止所有正在运行的容器docker ps -a -q
在您的机器上停止Docker并重新启动它。
答案 10 :(得分:0)
就我而言,端口80是Web服务器的默认端口,因此受到保护。我将绑定更改为端口60:8080,以确保没有更深层次的问题。将绑定更改为其他端口后,我可以执行docker run并在浏览器中的Advanced Customization上点击它
答案 11 :(得分:0)
立即检查端口80上的内容-sudo ss -tulpn | grep :80
您可能正在运行apache2。
您可以检查它-sudo service apache2 status
如果是这样-sudo service apache2 statop
答案 12 :(得分:0)
对我来说,一个简单的
ddev poweroff
修复了这个问题。