我第一次使用docker而且我试图实现这个 - https://docs.docker.com/get-started/part2/#tag-the-image
在一个阶段,我试图通过此命令与localhost连接 -
$ curl http://localhost:4000
Run Code Online (Sandbox Code Playgroud)
显示此错误 -
curl: (7) Failed to connect to localhost port 4000: Connection refused
Run Code Online (Sandbox Code Playgroud)
但是,我通过以下代码解决了这个问题 -
$ docker-machine ip default
$ curl http://192.168.99.100:4000
Run Code Online (Sandbox Code Playgroud)
之后一切都很顺利,但在最后一部分,我试图按照教程使用以下行来运行应用程序...
$ docker run -p 4000:80 anibar/get-started:part1
Run Code Online (Sandbox Code Playgroud)
但是,我收到了这个错误
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.
Run Code Online (Sandbox Code Playgroud)
看来端口是分配的,所以你能告诉我如何解决这个问题,请帮助我..非常感谢:)
yam*_*enk 62
在启动使用相同端口的新容器之前,您需要确保已启动的先前容器已被终止.
docker container ls
docker rm -f <container-name>
Run Code Online (Sandbox Code Playgroud)
Ale*_*ara 24
我是这样解决的:
首先,我停止了所有正在运行的容器:
docker-compose down
Run Code Online (Sandbox Code Playgroud)
然后我执行了一个lsof命令来使用端口查找进程(对我来说是端口 9000)
sudo lsof -i -P -n | grep 9000
Run Code Online (Sandbox Code Playgroud)
最后,我“杀死”了这个过程(在我的例子中,它是一个 VSCode 扩展):
kill -9 <process id>
Run Code Online (Sandbox Code Playgroud)
Fah*_*ari 21
我尝试了上述所有答案,但都没有奏效,就我而言,甚至docker container ls没有显示任何容器正在运行。看起来问题是由于 docker 代理仍在使用端口,尽管没有容器在运行。就我而言,我使用的是 ubuntu。这是我尝试并解决的问题,只需运行以下两个命令:
sudo service docker stop
sudo rm -f /var/lib/docker/network/files/local-kv.db
Run Code Online (Sandbox Code Playgroud)
小智 17
向IgorBeaz致敬,你需要停止运行当前的容器.为此,您将了解当前的CONTAINER ID:
$ docker container ls
Run Code Online (Sandbox Code Playgroud)
你会得到类似的东西:
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
Run Code Online (Sandbox Code Playgroud)
然后你通过以下方式停止容器:
$ docker stop 12a32e8928ef
Run Code Online (Sandbox Code Playgroud)
最后,你尝试做你想做的事,例如:
$ docker run -p 4000:80 friendlyhello
Run Code Online (Sandbox Code Playgroud)
小智 13
当我使用nginx docker镜像时,我也遇到了这个错误:
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.
Run Code Online (Sandbox Code Playgroud)
我使用以下命令解决了它:
$ docker container ls
$ docker stop [CONTAINER ID]
Run Code Online (Sandbox Code Playgroud)
然后,再次运行这个 docker 容器(像这样)就可以了:
$ docker run -v $PWD/vueDemo:/usr/share/nginx/html -p 8080:80 -d nginx:alpine
Run Code Online (Sandbox Code Playgroud)
你只需要停止之前的docker容器即可。
docker ps将显示 docker 上运行的容器列表。找到在您所需端口上运行的端口并记下其 PID。
使用以下命令停止并删除该容器:
docker stop PID
docker rm PID
Run Code Online (Sandbox Code Playgroud)
现在运行docker-compose up,您的服务应该在您释放所需端口后运行。
以上两个答案是正确的,但对我不起作用。
docker container ls
docker container ls -a显示了先前退出并运行的所有进程。docker stop <container id>还是docker container stop <container id>没用docker rm -f <container id>并且成功了。docker container ls -a此过程,但不存在此过程。它可能与指定的相同端口和docker-compose.yml/docker-compose.override.yml或使用环境变量显式指定的相同端口发生冲突。
我有一个docker-compose.yml使用环境变量指定的容器上的端口,以及docker-compose.override.yml一个显式指定的相同端口之一。显然,docker 试图在同一个容器上打开两者。docker container ls -a两者均未列出,因为容器无法启动并列出端口。
| 归档时间: |
|
| 查看次数: |
38506 次 |
| 最近记录: |