来自守护程序的错误响应:Container [id]未运行

时间:2018-06-13 05:11:20

标签: docker db2

我第一次使用码头工具。我为DB2创建了docker镜像,并在使用命令

开始登录实例时
sudo docker exec -i -t db2 /bin/bash

我收到了以下错误:

Error response from daemon: Container [id] is not running

我还尝试用以下方式启动实例:

sudo docker start [id]

它返回错误消息:

Error response from daemon: driver failed programming external connectivity on endpoint db2 ([id]): Bind for 0.0.0.0:50000 failed: port is already allocated
Error: failed to start containers: [id]

有人可以为此提供帮助吗?

1 个答案:

答案 0 :(得分:1)

如果您查看了错误消息,则表明您正在尝试在容器[id]中运行一个入口点,该容器使用已经使用的端口50000。

这就是docker start [id]不起作用的原因。

这可能是由几件事造成的(让我添加一些而不是具体问题,因为你没有表达很多细节)。

  • docker exec应该与已经运行的容器ID一起使用,而不是映像,而不是入口点。所以,也许你错过了docker run之前的docker exec。如果db2是您的泊坞窗图像,请尝试docker run -it db2 /bin/bash
  • 其他可能性是您的容器已启动且入口点因任何原因而退出,而未释放端口50000.因此,当您尝试在没有释放端口的情况下重新启动时,如果容器已退出但未被移除,则其他容器无法启用docker可以使用此端口启动。我建议你做docker container prune来清理以前退出的容器。
  • 也许您正在从同一个图像(可能是 db2 )启动两个或更多容器而不进行任何端口映射。如果要运行同一个docker镜像的多个实例,可以执行以下两项操作:
    1. 使用 docker swarm kubernetes 或类似缩放容器(pod)。它允许您使用相同的端口50000。
    2. docker run命令中使用端口映射:例如,
      • 对于第一个容器,执行docker run -d -p 50001:50000 [docker-image] [entrypoint]
      • 第二个容器,docker run -d -p 50002:50000 [docker-image] [entrypoint] 通过这种方式,您将从不同的端口到相同的50000有几个映射,避免了端口重用的错误,但我不确定这是否是您想要做的。我只是想用你提供的一些小信息来帮助你。

我希望无论如何它都有帮助。