我有一个 docker 镜像 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”。
最佳答案
我希望状态为已退出。也许您使用的原始图像有一个 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
关于docker - 来自守护程序 : Container CONTAINER_NAME is not running 的错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29144792/