来自守护程序的错误响应:容器CONTAINER_NAME未运行

时间:2015-03-19 12:37:03

标签: docker boot2docker

我有一个docker image dajobe / hbase,它是从Ubuntu构建的。我创建了一个这个图像的容器,并将其命名为hb。

$ docker run -d --name hb dajobe/hbase
e1f68ff8b3b6c5e474426e2566f8c087d6a785fc5eeb58cd2aeb86176068651d

然后我在hb上启动了/ bin / bash,并检查了vi编辑器的可用性。

$ docker exec -it hb /bin/bash
root@e1f68ff8b3b6:/# vi
bash: vi: command not found

然后我使用apt-get

安装了vi编辑器
# apt-get install vim
Reading package lists...
DoneBuilding dependency tree
Reading state information... Done
.....
.....

我想提交更改,以便vi编辑器可以保留。

$ docker commit hb dajobe/hbase
1be196188efc5a52562dc8ee1b63d0fd560ea163c49331c10dc435848d75ef64

然后,当我再次启动dajobe / hbase时,它会自动停止。

$ docker run -d --name hb dajobe/hbase
c3e7b9f48077ef854efc6f9bab5e85986e265c98de5423bece0000c973206c38

$ docker exec -it hb /bin/bash
FATA[0000] Error response from daemon: Container hb is not running

为什么容器没有运行?

$ docker ps -a
CONTAINER ID        IMAGE              COMMAND          CREATED                   STATUS                 PORTS      NAMES
c3e7b9f48077 dajobe/hbase:latest "/opt/hbase-server"  11 secs ago         Exited (0) 8 secs ago                      hb

为什么状态“已退出”?在提交之前,情况并非如此,状态为“Up”。

2 个答案:

答案 0 :(得分:2)

我希望状态为退出。也许您正在使用的原始图像有一个ENTRYPOINT,可以在您执行操作时保持容器运行。你可以试试这个:

docker run -d --name hb dajobe/hbase sleep 60

然后尝试你的exec,在接下来的60秒内你将连接你的交互式shell。之后,您将再次收到相同的消息。

-d使容器成为守护进程。但它需要做一些事情,否则它就会退出!您是否尝试使用-it?

执行运行行
docker run -it --name hb dajobe/hbase bash

您也可以在那里获得shell提示,您可以在其中对图像进行更新。

-g

答案 1 :(得分:1)

就我而言,它解决了重新启动容器的问题,听起来很简单。

  • 如果您不知道,请使用docker ps -a(列“NAMES”)搜索容器名称;在您的情况下,它是已知的:“hb”。
  • 然后docker start hb
  • 然后docker exec -it hb /bin/bash

当您想启动一个已经存在但已退出的容器时,您使用了 run 而不是 start。我在您的命令中没有看到任何 start

<块引用>

然后,当我再次启动dajobe/hbase时,它自动停止了。

$ docker run -d --name hb dajobe/hbase c3e7b9f48077ef854efc6f9bab5e85986e265c98de5423bece0000c973206c38

$ docker exec -it hb /bin/bash FATA[0000] 来自守护进程的错误响应: 容器 hb 未运行