Docker 启动不了容器的问题

今天在运行 docker 的时候,就是执行 docker exec 命令的时候,发现一直报错。具体的报错信息如下:

Error response from daemon: Container XXX is not running

正常情况下,执行 docker ps  就可以看到运行的容器了,如下:

docker ps 

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70ecd2110df8 centos "/bin/bash" About an hour ago Up About an hour 0.0.0.0:8008->80/tcp tender_cray

status 显示的是 Up About XXX,表示容器已经启动起来了.

可是这个时候执行 docker ps 的时候发现是空的,并没有看到 docker 的进程 

localhost:~ zhuzi$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
01a3e326a1c6 centos "/bin/bash" 8 seconds ago Exited (0) 6 seconds ago unruffled_lamarr

然后 docker ps -a 查看,发现 status 是 Exited (0) 6 seconds ago.表示容器并没有启动,已经退出了。

后来查看了各种资料才发现,原来是 docker run 命令的时候没有指定 dit 参数导致的。

Docker容器后台运行,就必须有一个前台进程。主线程结束,容器会退出。

所以就加上了 dit 参数,再次运行即可。

localhost:~ zhuzi$ docker run -dit -p 8008:80 -v /Users/bamboo:/app centos /bin/bash

localhost:~ zhuzi$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70ecd2110df8 centos "/bin/bash" About an hour ago Up About an hour 0.0.0.0:8008->80/tcp tender_cra

然后再 exec 以命令在容器中开启一个交互模式的终端.

localhost:~ zhuzi$ docker exec -t -i 70ecd2110df8 /bin/bash
[root@70ecd2110df8 /]#

可以看到已经进入了。

原文地址:https://www.cnblogs.com/zhuzi91/p/8287617.html