背景介绍 

最近在写 docker 相关教程,过程中发现容器暂停退出竟然有 docker kill、docker stop 和 docker pause 三种方式,今天就来看下三者间的区别。

 

辅助指令

  • docker top - 查看容器进程

  • docker event - 查看容器相关事件

  • docker stats - 查看容器资源使用率

 

准备工作

1. 启动容器

docker run --name nginx-kill -d nginx
docker run --name nginx-stop -d nginx
docker run --name nginx-pause -d nginx

 

2. 查看容器进程

docker top nginx-kill
docker top nginx-stop
docker top nginx-pause

 

3. 查看资源使用

docker stats nginx-kill nginx-stop nginx-pause

 

4. 打开事件监听

docker events

 

开始分析

1. docker kill

docker kill nginx-kill
docker top nginx-kill
docker stats nginx-kill
docker ps -a

docker top 指令报错,CPU 和内存使用率为 0,容器状态为 Exited,退出码为 137。

 

相关事件:kill -> die

 

2. docker stop

docker stop nginx-stop
docker top nginx-stop
docker stats nginx-stop
docker ps -a

docker top 指令报错,CPU 和内存使用率为 0,容器状态为 Exited,退出码为 0。

 

相关事件:kill -> die -> stop

 

3. docker pause

docker pause nginx-pause
docker top nginx-pause
docker stats nginx-pause
docker ps -a

docker top 指令正常,CPU 使用率为 0,内存使用率大于0,容器状态为 Pause。

 

相关事件:pause

 

结果分析

指令docker killdocker stopdocker pause
docker ps -a

容器暴力退出未保存的信息会丢失退出码 137

容器正常退出无消息丢失退出码 0

容器暂停
docker top报错报错正常显示进程
docker stats

CPU 使用率 = 0内存使用率 = 0

CPU 使用率 = 0内存使用率 = 0

CPU 使用率 = 0内存使用率 > 0

docker events

kill - signal=9die

kill - signal=3diestop

pause
how to restart

docker startdocker restart

docker startdocker restart

docker unpause
作者:|编程玩家|,原文链接: https://www.cnblogs.com/Erik_Xu/p/16311721.html

文章推荐

SpringCloud 客户端负载均衡:Ribbon

《Unix 网络编程》08:基本UDP套接字编程

Redis 中的原子操作(1)-Redis 中命令的原子性

『忘了再学』Shell基础 — 21、变量的测试与内容置换

.NET性能优化-推荐使用Collections.Pooled

值得注意的: c++动态库、静态库、弱符号__attribute__((wea...

自动微分原理

Spring 源码(16)Spring Bean的创建过程(7)属性填充

「Java分享客栈」随时用随时翻:微服务链路追踪之zipkin搭建

c++ web框架实现之静态反射实现

软件架构-springcloud分布式链路跟踪sleuth

MongoDB是什么?非关系型数据库的优点?安装使用教程