我第一次使用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-compose问题的人。 当你有多个类似服务的项目(即在不同的文件夹中)时,你需要在其他每个项目中运行docker-compose stop。

其他回答

以上两个答案是正确的,但对我不适用。

我一直看到像下面这样的码头集装箱的空白 然后我尝试,docker容器ls -a之后,它显示了所有之前退出和运行的进程。 然后docker stop <容器id>或docker container stop <容器id>就不工作了 然后我尝试了docker rm -f <容器id>,它工作了。 现在,我尝试了docker容器ls -a,这个过程不存在。

只需重新启动计算机,docker服务就会重新启动

它可能与docker-compose中指定的相同端口冲突。Yml和docker-compose.override。Yml或使用环境变量显式指定的相同端口。

我有一个码头式的作曲。Yml,使用环境变量指定容器上的端口,以及docker-compose.override。Yml,使用显式指定的相同端口之一。显然码头工人试图在同一个集装箱上打开这两个集装箱。Docker容器ls -a都没有列出,因为容器无法启动并列出端口。

我尝试了上面所有的答案,没有一个有效,在我的情况下,即使docker容器ls也没有显示任何容器正在运行。看起来问题是由于docker代理仍然在使用端口,尽管没有运行容器。就我而言,我使用的是ubuntu。以下是我尝试并解决的问题,只需运行以下两个命令:

sudo service docker stop
sudo rm -f /var/lib/docker/network/files/local-kv.db

为了向IgorBeaz致敬,您需要停止运行当前容器。你需要知道当前的CONTAINER ID:

$ docker container ls

你会得到这样的结果:

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
12a32e8928ef        friendlyhello       "python app.py"     51 seconds ago      Up 50 seconds       0.0.0.0:4000->80/tcp   romantic_tesla   

然后停止容器:

$ docker stop 12a32e8928ef

最后你试着去做你想做的事,例如:

$ docker run -p 4000:80 friendlyhello