我是第一次使用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]
有人能帮忙吗?
1条答案
按热度按时间dgsult0t1#
如果您查看错误消息,它显示您正试图在使用端口50000的容器[id]中运行一个入口点,而该端口已经被使用。
这就是
docker start [id]
不起作用的原因。这可能是由几件事引起的(让我补充一些,而不是具体的,这是问题所在,因为你没有表达很多细节)。
docker exec
应该和已经在运行的容器id一起使用,而不是映像,不是入口点。所以,也许你在docker exec
之前错过了docker run
。如果db2是你的docker映像,尝试执行docker run -it db2 /bin/bash
。docker container prune
来清理以前退出的容器。1.使用 docker swarm,kubernetes 或类似的扩展容器(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,从而避免了端口重用的错误,但我不确定这是否是您想要做的。我只是试图用您提供的少量信息来帮助您。我希望这对你有帮助。