docker stop和docker kill的区别
前提知识点:
Linux其中两种终止进程的信号是:SIGTERM和SIGKILL
SIGKILL信号:无条件终止进程信号。进程接收到该信号会立即终止,不进行清理和暂存工作。该信号不能被忽略、处理和阻塞,它向系统管理员提供了可以杀死任何进程的方法。
SIGTERM信号:程序终结信号,可以由kill命令产生。与SIGKILL不同的是,SIGTERM信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。
docker stop 会先发出SIGTERM信号给进程,告诉进程即将会被关闭。在-t指定的等待时间过了之后,将会立即发出SIGKILL信号,直接关闭容器。
docker kill 直接发出SIGKILL信号关闭容器。但也可以通过-s参数修改发出的信号。
因此会发现在docker stop的等过过程中,如果终止docker stop的执行,容器最终没有被关闭。而docker kill几乎是立刻发生,无法撤销。
此外还有些异常原因也会导致容器被关闭,比如docker daemon重启、容器内部进程运行发生错误等等“异常原因”。
容器重启 – docker restart
作用: 重启一个或多个处于运行状态、暂停状态、关闭状态或者新建状态的容器 该命令相当于stop和start命令的结合
命令格式:
docker restart [OPTIONS] CONTAINER [CONTAINER...]
命令参数(OPTIONS):
-t, --time int 重启前,等待的时间,单位秒(默认 10s) 实则是关闭前等待的时间
容器删除 – docker container rm
作用: 删除一个或多个容器
命令格式:
docker container rm [OPTIONS] CONTAINER [CONTAINER...] 或者 docker rm [OPTIONS] CONTAINER [CONTAINER...]
命令参数(OPTIONS):
-f, --force 强行删除容器(会使用 SIGKILL信号) -v, --volumes 同时删除绑定在容器上的数据卷
命令演示:
五、容器信息查看
容器详细信息 – docker container inspect
作用: 查看本地一个或多个容器的详细信息
命令格式:
docker container inspect [OPTIONS] CONTAINER [CONTAINER...] 或者 docker inspect [OPTIONS] CONTAINER [CONTAINER...]
命令参数(OPTIONS):
-f, --format string 利用特定Go语言的format格式输出结果 -s, --size 显示总大小
命令演示:
容器日志信息 – docker logs
作用: 查看容器的日志信息
命令格式:
docker logs [OPTIONS] CONTAINER
命令参数(OPTIONS):
--details 显示日志的额外信息 -f, --follow 动态跟踪显示日志信息 --since string 只显示某事时间节点之后的 --tail string 显示倒数的行数(默认全部) -t, --timestamps 显示timestamps时间 --until string 只显示某事时间节点之前的
注意: 容器日志中记录的是容器主进程的输出STDOUT\STDERR
容器重命名 – docker rename
作用: 修改容器的名称
命令格式:
docker rename CONTAINER NEW_NAME
命令参数(OPTIONS): 无
六、容器运行时操作
容器连接 – docker attach
作用: 将当前终端的STDIN、STDOUT、STDERR绑定到正在运行的容器的主进程上实现连接
命令格式:
docker attach [OPTIONS] CONTAINER
命令参数(OPTIONS):
--no-stdin 不绑定STDIN
容器中执行新命令 – docker exec
作用: 在容器中运行一个命令
命令格式:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
命令参数(OPTIONS):
-d, --detach 后台运行命令 -i, --interactive 即使没连接容器,也将当前的STDIN绑定上 -t, --tty 分配一个虚拟终端 -w, --workdir string 指定在容器中的工作目录 -e, --env list 设置容器中运行时的环境变量
七、容器总结
容器的详解到这结束,后面还有更深入的文章讲解!