我第一次使用docker,我试图实现这个- https://docs.docker.com/get-started/part2/#tag-the-image

在一个阶段,我试图通过这个命令连接到localhost -

$ curl http://localhost:4000

哪个显示了这个错误-

curl: (7) Failed to connect to localhost port 4000: Connection refused

但是,我已经通过以下代码解决了这个问题-

$ docker-machine ip default
$ curl http://192.168.99.100:4000

在那之后一切都很顺利,但在最后一部分,我试图根据教程使用下面的行来运行应用程序……

$ docker run -p 4000:80 anibar/get-started:part1

但是,我得到了这个错误

C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: driver failed programming external connectivity on endpoint goofy_bohr (63f5691ef18ad6d6389ef52c56198389c7a627e5fa4a79133d6bbf13953a7c98): Bind for 0.0.0.0:4000 failed: port is already allocated.

当前回答

快速修复是一个重启docker:

Sudo服务停止 Sudo服务docker启动

其他回答

在启动一个使用相同端口的新容器之前,您需要确保之前启动的容器已被杀死。

docker container ls
docker rm -f <container-name>

别忘了最简单的解决办法....

重新启动计算机。

我已经尝试了上面的大部分方法,但仍然无法解决它。然后重启我的Mac,一切就恢复正常了。

当我使用nginx docker image时,我也得到了这个错误:

docker: Error response from daemon: driver failed programming external connectivity on endpoint recursing_knuth (9186f7d7f523732b99d3510029cde9679f3f3fe7b7eb5f612d54c4aacea58220): Bind for 0.0.0.0:8080 failed: port is already allocated.

我用下面的命令来解决它:

$ docker container ls
$ docker stop [CONTAINER ID]

然后,再次运行这个docker容器(像这样)就可以了:

$ docker run -v $PWD/vueDemo:/usr/share/nginx/html -p 8080:80 -d nginx:alpine

你只需要停止之前的docker容器。

对我来说,容器没有显示运行,所以没有使用端口9010(在我的情况下),但Docker仍然抱怨。

我不想重置我的Docker (Windows),所以我所做的解决方法很简单:

删除网络(我知道在容器使用该端口(9010)之前使用此网络)docker network ls docker network rm blabla(或id) 实际上,我使用了一个新的网络,而不是旧的(有bug的)网络,但不应该需要 重启码头工人

这是唯一对我有效的方法。我无法解释,但不知何故,“旧”网络仍然绑定到那个端口(9010),Docker一直在“阻止”它(抱怨它)

我的案件被转储XD我暴露端口80两次:D

        ports:
            - '${APP_PORT:-80}:80'
            - '${APP_PORT:-8080}:8080'

APP_PORT被定义,因此80被公开了两次。