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 /]#
可以看到已经进入了。