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

4sup72z8  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(170)

我是第一次使用Docker,我为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]

有人能帮忙吗?

dgsult0t

dgsult0t1#

如果您查看错误消息,它显示您正试图在使用端口50000的容器[id]中运行一个入口点,而该端口已经被使用。
这就是docker start [id]不起作用的原因。
这可能是由几件事引起的(让我补充一些,而不是具体的,这是问题所在,因为你没有表达很多细节)。

  • docker exec应该和已经在运行的容器id一起使用,而不是映像,不是入口点。所以,也许你在docker exec之前错过了docker run。如果db2是你的docker映像,尝试执行docker run -it db2 /bin/bash
  • 另一种可能是你的容器启动了,入口点退出了,没有释放端口50000。所以,当你试图在没有释放端口的情况下重新启动时,如果容器退出了,但没有被删除,那么其他的停靠器就不可能使用这个端口启动。我建议你做docker container prune来清理以前退出的容器。
  • 也许你要从同一个映像(也许是 db2)启动两个或多个容器,而没有进行任何端口Map。如果你想运行同一个docker映像的多个示例,你可以做两件事:

1.使用 docker swarmkubernetes 或类似的扩展容器(pod)。它可以让你使用相同的端口50000。

  • docker run命令中使用端口Map:例如,
  • 对于第一个容器,执行docker run -d -p 50001:50000 [docker-image] [entrypoint]
  • 对于第二个容器,执行docker run -d -p 50002:50000 [docker-image] [entrypoint]这样,您将有几个从不同端口到同一个50000的Map,从而避免了端口重用的错误,但我不确定这是否是您想要做的。我只是试图用您提供的少量信息来帮助您。

我希望这对你有帮助。

相关问题