【问题标题】:docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:5000: bind: address already in use [duplicate]docker:来自守护进程的错误响应:端口不可用:监听 tcp 0.0.0.0:5000:绑定:地址已在使用中 [重复]
【发布时间】:2022-01-21 07:48:33
【问题描述】:

我是新手,正在尝试来自 DigitalOcean 的 this tutorial,但是当我尝试 docker run -p 5000:5000 flask_demo:v0 时,我收到以下错误。

码头工人:

Error response from daemon: Ports are not available: listen tcp 0.0.0.0:5000: bind: address already in use.

请帮帮我

【问题讨论】:

  • 另一个应用程序已经在你的开发机器上运行并监听端口5000
  • 具体写什么。另一个服务正在使用该端口。使用另一个端口-p 5001:5000 或通过netstat 找出正在使用此端口并停止它。

标签: docker port


【解决方案1】:

您之前可能运行过该应用程序一次。当一个 docker 容器退出时,它仍然在你的机器上并且已经分配了端口。

要查看您拥有的容器,请运行命令

docker ps -a

您可能会看到列出的旧容器,并且它正在使用端口 5000。 删除它

docker rm <container name>

现在端口再次可用。

如果您认为容器退出后不需要查看容器,可以在 docker run 命令中添加--rm 参数,它会在退出时自动删除。像这样

docker run -p 5000:5000 --rm flask_demo:v0

【讨论】:

    【解决方案2】:

    然后你就绑定另一个端口

    docker run -p 5001:5000 flask_demo:v0
    

    -p 5001:5000 基本上意味着,将我的host machine 中的端口 5001 与容器中的端口 5000 绑定。由于您的主机中已经使用了 5000 端口,因此您可以绑定另一个端口示例:端口 5001

    【讨论】:

    • 最好找到已经绑定到该端口的内容。它很可能是同一容器的另一个实例,OP 不知道它正在运行(刚开始使用 Docker 时很容易做到)
    • 谢谢,这有帮助。现在我可以看到我的简单 Hello world 正在 local5001 上运行。
    【解决方案3】:

    首先找出是什么进程占用了该端口: ss -aultnp|grep 5000

    获取程序: pid ps -ef|grep pid

    查找占用端口的程序

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 2020-11-09
      • 2020-07-25
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多