Docker学习:理论基础之Docker容器生命周期 | kill和 stop的区别与联系 | docker pause/ unpause

前言

本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍:Docker容器生命周期,虽然这知识点,平时开发很少用到,但是在运维过程中,看到相关服务状态,要了解这些状态具体是什么含义,我们一起来学习一下吧!

概述 

一叶障目,不见泰山,我们就先从一叶,一叶的小细节开始吧,最后自然可以窥见泰山全貌,直至最后消灭容器,一切状态化为灰飞烟灭

一、生命周期相关指令

1.docker kill和docker stop的区别与联系

相同点:两者都是停掉容器,并把容器状态指定到stopped

不同点:
kill杀死容器,进入stopped状态被重新start后会开启新的进程号
stop停掉的容器,再次被重新start后进程号不变,还是原来的。 

kill命令比较生猛,不管容器死活,直接给系统发送SIGKILL的系统信号强行kill掉进程,就是要用kill -9干掉容器;

stop比较温柔,先给容器发送一个TERM信号,给容器充足时间(默认10秒)保存数据,让容器自动安全停止运行,超时后再给系统发送SIGKILL的系统信号强行kill掉进程,最后转变为stop状态。

使用docker stop -t [s, default 10],可调整超时时间(docker stop -t 20 mynginx)

2.docker pause/ unpause 暂停和取消暂停(不太常用)

pause  暂停容器中所有的进程,状态为Pause(暂停对外提供服务)

unpause 取消暂停,将容器恢复为Up上线状态 

使用场景:在各个容器之间调试时使用。 

语法:docker pause [OPTIONS] CONTAINER [CONTAINER...] 

docker pause mynginx

二、生命周期演示

更好的展示效果,先停掉Docker服务

#service docker stop
或者
#systemctl stop docker 

1.docker create  状态为create创建状态

docker create tomcat:8.5.46-jdk8-openjdk  #创建容器(并没有启动)
docker ps  #查看容器列表(只显示已启动的)
docker ps -a  #查看所有容器(可以看到状态是Created的容器)

发现:create命令,创建容器后,#docker ps 并看不到该容器,因为ps命令不带任何任何参数时,只显示状态为Up的容器。此时的容器状态是Created

2.docker start  状态为up上线状态

docker start bf88214f5f6d  #根据容器id启动容器
docker ps #可以看到容器状态为up,已上线状态

 发现:start命令后,容器状态由Created变为Up

3.docker pause/unpause 状态为pause暂停/上线状态

docker pause bf88214f5f6d  #根据容器id启动容器
docker ps #可以看到容器状态为up(pause),已上线(暂停)状态
docker unpause bf88214f5f6d  #取消暂停容器
docker ps 

 

 发现:pause命令后,容器状态从Up变为Paused;unpause命令后,状态又切回Up状态。 

4.docker stop  停掉容器

docker stop bf88214f5f6d
docker ps -a

 发现:stop命令后,容器状态从Up变为Exited,退出状态

5.docker rm -f  强制删除容器

docker rm -f  bf88214f5f6d 
docker ps -a

 发现:容器被rm命令移除后,docker ps -a 看不到任何容器。皮之不存毛将焉附

三、泰山图,全貌

下图中,椭圆代表容器的状态方块代表状态切换过程中,所产生的事件
 

图片描述,形象具体,以椭圆为中心,仔细对照学习一下吧! 

注:图片中左下有个菱形(restart policy should restart?)触发该事件的源头一般是,容器内存溢出等异常。该策略通过 docker run --restart=always时来控制;也可以在docker编排yml文件中配置。

尾言

本讲内容是从 Docker入门到进阶里面抽离出来的内容,从而使原文更加有序、重点突出。如果感觉文章还不错,对你有帮助,动动小手,点个赞吧~~,啦啦啦,啦啦啦~~

附注

你还可能对以下内容感兴趣,一起附注给爱学习的你

1、Linux环境下Docker的快速安装Windows10+专业版环境下安装Docker

2、如何获取Docker的最新版本 | 如何获取Tomcat/JDK/Nginx指定版本镜像

3、配置阿里云镜像加速器,提高镜像下载速度

4、Dockerfile八大核心命令 | Dockerfile构建自己的镜像

5、Docker容器 | Dockerfile优化

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Docker容器生命周期包括以下几个阶段: 1. 创建(Create):使用Docker镜像创建容器。可以通过`docker run`命令来创建容器,并指定所需的镜像、容器名称、端口映射等参数。在创建过程中,Docker会为容器分配一个唯一的ID,并分配一个虚拟的网络接口和IP地址。 2. 启动(Start):启动已创建的容器。可以使用`docker start`命令来启动已停止的容器,或者在创建容器时使用`docker run`命令的`-d`参数来直接启动容器。启动后,容器中的应用程序开始运行。 3. 运行(Run):容器运行期间,应用程序在容器内部执行。可以通过`docker exec`命令在运行的容器中执行额外的命令,如进入容器内部进行调试或管理。 4. 停止(Stop):停止正在运行的容器。可以使用`docker stop`命令来停止容器的运行,Docker将向容器内部发送一个停止信号,容器会执行一些清理和关闭操作后停止运行。 5. 重启(Restart):重新启动已停止的容器。使用`docker restart`命令可以重新启动已经停止的容器Docker会先停止再启动容器。 6. 暂停(Pause):暂停正在运行的容器。使用`docker pause`命令可以暂停容器的运行,容器中的所有进程会被挂起。 7. 恢复(Unpause):恢复已暂停的容器。使用`docker unpause`命令可以恢复被暂停的容器,使其继续运行。 8. 删除(Remove):删除不需要的容器。使用`docker rm`命令可以删除已停止的容器,释放相关资源。 需要注意的是,容器生命周期可以根据需要进行管理,可以根据实际情况选择适当的操作来创建、启动、停止、重启和删除容器,以满足应用程序的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值