容器状态

下图是我对容器状态的理解

docker run 容器一直运行 docker容器运行时_docker run 容器一直运行


下面对容器的几种状态进行操作

首先运行一个容器

docker run 容器一直运行 docker容器运行时_Docker_02

查看容器状态处于exited

docker run 容器一直运行 docker容器运行时_文件系统_03

此时使用start命令可以将容器b1从die状态重新启动为running状态,并进行交互

docker run 容器一直运行 docker容器运行时_docker run 容器一直运行_04

在另一个窗口即可查看b1容器已经在运行

docker run 容器一直运行 docker容器运行时_Docker_05

此时我们可以将running状态的b1容器变为pause阻塞状态

docker run 容器一直运行 docker容器运行时_docker run 容器一直运行_06

查看容器状态

docker run 容器一直运行 docker容器运行时_文件系统_07

测试在容器b1交互窗口输入ls命令,发现没有任何反应

docker run 容器一直运行 docker容器运行时_Docker_08

取消b1的pause的阻塞状态,并查看容器状态,变为running

docker run 容器一直运行 docker容器运行时_文件系统_09

这个时候再去看交互窗口,发现ls命令出现了

docker run 容器一直运行 docker容器运行时_Docker_10

将running状态的b1容器进行强制停止,进入die状态

docker run 容器一直运行 docker容器运行时_Docker_11

交互窗口也自动进行关闭

docker run 容器一直运行 docker容器运行时_文件系统_12

将die状态的b1容器进行重新启动

docker run 容器一直运行 docker容器运行时_docker_13

进入容器b1内部

docker run 容器一直运行 docker容器运行时_Docker_14

将running状态的b1容器进行优雅关闭

docker run 容器一直运行 docker容器运行时_docker_15

我们可以删除停止状态的b1,再次查看发现b1已经彻底没有了

docker run 容器一直运行 docker容器运行时_文件系统_16

此处说明docker run = docker create + docker start

创建容器b1,查看容器处于create状态

docker run 容器一直运行 docker容器运行时_Docker_17

启动容器b1,进入running状态

docker run 容器一直运行 docker容器运行时_文件系统_18


docker stop和 docker kill有什么区别?

docker stop是优雅关闭容器,先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。
docker kill,发送SIGKILL信号,应用程序直接退出。


docker start 和 docker restart之间的区别

docker start 包含容器文件系统挂载的操作
docker restart不包含容器文件系统的卸载与挂载操作,本质上docker restart不涉及文件系统的操作,因此restart命令并不是stop与start两个命令的顺序叠加。


docker pause作用

暂停一个或多个容器中的所有进程
恢复一个或多个容器中的所有进程


docker run 参数整理

参数

作用

-it

交互式运行

-a

附加到终端

–rm

容器关闭后自动删除

-d

容器后台运行,比如nginx

-i

让容器的标准输入保持打开,通常与 -t 同时使用;

-h

主机名

-t

为容器重新分配一个伪输入终端,通常与 -i 同时使用;

Docker基础篇(5)- Docker容器常用基础命令Docker基础篇(7)- Docker运行nginx、redis容器