我第一次使用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.

当前回答

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

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

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

其他回答

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

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

为了向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

在Linux上“sudo systemctl restart docker”为我解决了这个问题

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

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

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

对于WINDOWS; 我杀死了docker使用的每个进程,并在services上重新启动docker服务。我的容器现在开始工作了。 它是关于Docker仍然在使用的端口,即使你当时没有使用。