容器生命周期管理
docker run
&docker create + docker start
docker run
相当于docker create + docker start –a
前台模式docker run -d
相当于docker create + docker start
后台模式
docker stop
&docker kill
- 前提知识点:
- Linux其中两种终止进程的信号是:SIGTERM和SIGKILL
- SIGTERM信号:程序终结信号,可以由kill命令产生。与SIGKILL不同的是,SIGTERM信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。
- SIGKILL信号:无条件终止进程信号。进程接收到该信号会立即终止,不进行清理和暂存工作。该信号不能被忽略、处理和阻塞,它向系统管理员提供了可以杀死任何进程的方法。
- docker stop 会先发出SIGTERM信号给进程,告诉进程即将会被关闭。在-t指定的等待时间过了之后,将会立即发出SIGKILL信号,直接关闭容器。
- docker kill 直接发出SIGKILL信号关闭容器。但也可以通过-s参数修改发出的信号。
- 因此会发现在docker stop的等过过程中,如果终止docker stop的执行,容器最终没有被关闭。而docker kill几乎是立刻发生,无法撤销。
- 此外还有些异常原因也会导致容器被关闭,比如docker daemon重启、容器内部进程运行发生错误等等“异常原因”。
- 前提知识点:
command | description | sample |
---|---|---|
docker create |
利用镜像创建出一个Created 状态的待启动容器 | docker create [OPTIONS] IMAGE [COMMAND] [ARG...] |
docker start |
将一个或多个处于创建状态或关闭状态的容器启动起来 | docker start [OPTIONS] CONTAINER [CONTAINER...] |
docker run |
利用镜像创建并启动一个容器 | docker run [OPTIONS] IMAGE [COMMAND] [ARG...] |
docker pause |
暂停一个或多个处于运行状态的容器 | docker pause CONTAINER [CONTAINER...] |
docker unpause |
取消一个或多个处于暂停状态的容器,恢复运行 | docker unpause CONTAINER [CONTAINER...] |
docker stop |
关闭一个或多个处于暂停状态或者运行状态的容器 | docker stop [OPTIONS] CONTAINER [CONTAINER...] |
docker kill |
强制并立即关闭一个或多个处于暂停状态或者运行状态的容器 | docker kill [OPTIONS] CONTAINER [CONTAINER...] |
docker restart |
重启一个或多个处于运行状态、暂停状态、关闭状态或者新建状态的容器,该命令相当于stop和start命令的结合 | docker restart [OPTIONS] CONTAINER [CONTAINER...] |
docker container rm |
删除一个或多个容器 | docker container rm [OPTIONS] CONTAINER [CONTAINER...] 或者docker rm [OPTIONS] CONTAINER [CONTAINER...] |