Docker容器的生命周期

news2024/12/23 18:10:28

在这里插入图片描述

引言

  Docker 容器作为一种轻量级虚拟化技术,在现代应用开发和部署中扮演着重要角色。理解容器的生命周期对于有效地管理和运维容器化应用至关重要。本文将深入探讨 Docker 容器的生命周期,从创建到销毁的各个阶段,帮助读者更好地掌握容器管理的核心概念。

一、Docker 简介和基本概念

1.1 Docker 容器

  Docker 是一个开源的容器化平台,旨在帮助开发人员更轻松地构建、部署和运行应用程序。它利用容器技术,将应用程序及其所有依赖项打包成一个独立的单元,使其在任何环境中都能一致运行。

  Docker 容器是 Docker 镜像的一个实例化运行,它是一个轻量级的、可执行的软件包,包含了运行应用程序所需的所有内容:代码、运行时、系统工具、系统库等。容器隔离了应用程序与其它容器及主机系统,使其能在一个独立的环境中运行。Docker 镜像是容器的模板,是一个只读的模板,包含了运行应用程序所需的所有内容。可以将镜像看作是容器的源代码,通过它可以创建多个相同的容器实例。

1.2 Docker 容器生命周期

  Docker 容器使用特定命令,将当前容器从一种状态转为另一种状态,使当前容器处于不同的状态。Docker 容器生命周期可分为已创建(Created)、运行中(Running)、停止(Stopped)、暂停中(Paused)以及删除(Deleted)等几种。 以下为生命周期状态转换图例:

image

  Docker 容器的生命周期涵盖了七个关键阶段、五种状态,每个阶段都有其特定的目标和操作。

序号生命周期说明
1创建(Create)在容器的生命周期中,创建是第一个关键阶段。
在这个阶段,我们选择适当的 Docker 镜像作为容器的基础,并使用 Docker 命令来创建容器实例。
容器的配置选项和环境变量设置也在这个阶段完成。
2启动(Start)一旦容器被成功创建,就可以进入启动阶段。启动已创建的容器,使其处于运行状态。
3运行(Run)容器的运行阶段是其生命周期的核心。在此阶段,在容器中运行应用程序,处理请求等。
4暂停在某些情况下,我们可能需要暂停容器的运行,而不是完全停止它。
暂停容器会冻结其状态,包括应用程序的进程。容器的资源消耗会暂时减少,但状态仍然保留在内存中。
5继续当需要时,我们可以将容器从暂停状态切换回运行状态,使应用程序继续处理请求。
6停止(Stop)停止正在运行的容器,但并不会删除它。
在停止阶段,容器会被正常关闭,应用程序会完成清理工作并释放资源。
7删除(Delete)当我们确定不再需要特定容器时,可以从系统中删除已停止的容器实例。

  综上所述,全面了解 Docker 容器的生命周期各个阶段对于有效地管理容器化应用至关重要。通过适当地执行每个阶段的操作,我们可以确保应用程序的可靠性和稳定性,并更好地应对容器化应用开发和运维的挑战。

二、Docker 容器生命周期状态

2.1 Created: 已创建

  创建容器是 Docker 容器生命周期的首要阶段。在这一阶段,我们需要明确选择一个合适的 Docker 镜像作为容器的基础,一个良好的镜像选择可以确保容器内应用的稳定和正确运行。

create
镜像
Created(已创建)
docker create [镜像名称|镜像ID]

使用 docker create nginx 会基于NGINX创建一个容器,结果状态为已创建状态(created)。

2.2 Running: 运行中

  启动容器是容器生命周期的关键步骤之一,使用 Docker 命令启动(或运行)容器

create
start
run
镜像
Created(已创建)
Running(运行中)
镜像
Created(已创建)
Running(运行中)
# 启动容器
docker start [容器名称|容器ID]

docker run [容器名称|容器ID]
  • 使用 docker start |容器ID] 启动指定ID的容器,结果状态为已运行状态(running)。
  • 使用 docker run -d nginx 会基于NGINX创建并运行一个容器,结果状态也为已运行状态(running)。

2.3 Stopped: 停止

  在容器的生命周期中,停止和重启容器是两个重要的操作,用于管理容器的运行状态和应用程序的执行。在容器运行过程中,合理地使用停止和重启操作可以确保应用程序的正常关闭和重新启动,避免数据丢失和不稳定的状态。通过这些操作,我们可以更好地管理容器的生命周期。

stop
restart
运行中的容器
Stopped(停止)
停止的容器
Running(运行中)
# 优雅地停止容器
docker stop [容器名称|容器ID]

# 立即强制停止容器
docker kill [容器名称|容器ID]

# 重启容器
docker restart [容器名称|容器ID]

使用 docker stop [容器ID] 将停止指定ID的容器,结果状态为已运行状态(stopped)。

2.4 Paused: 暂停中

  在容器运行时,我们可以选择将容器暂停,以冻结容器的状态。暂停容器可以保留容器的当前状态,同时释放部分资源。当需要时,我们可以恢复容器的运行状态,使应用程序继续执行。

pause
unpause
运行中的容器
Paused(暂停中)
Running(运行中)
# 暂停容器
docker pause [容器名称|容器ID]

# 继续容器
docker unpause [容器名称|容器ID]
  • 使用 docker pause [容器ID] 将暂停指定ID的容器,结果状态为已暂停状态(pause)。暂停状态容器可以使用unpause恢复运行状态。
  • 使用 docker unpause [容器ID] 将恢复指定ID的容器为运行状态,结果状态为运行状态(running)。

  通过暂停和继续容器,可以在一定程度上控制容器的资源使用,同时保留容器的状态。这在某些场景下可能会非常有用,例如需要暂时释放资源以应对其他任务的情况,或者在容器内发生故障时,冻结容器状态以便进行故障排查。

2.5 Deleted: 删除

  在容器的生命周期中,当我们确定某个容器不再需要时,可以选择将其删除,以释放资源并保持环境整洁。这将会彻底删除指定的容器,包括其状态、数据以及所有相关信息。需要注意的是,删除容器不会影响镜像本身,镜像将保留在系统中供其他容器使用。

stop
rm
运行中的容器
Stopped(已停止)
Deleted(删除)
docker rm [容器名称|容器ID]

  直接删除运行中容器,会弹出警告错误。返回信息告诉你,需先停止容器,才可以删除。或者使用-f参数进行强制删除。先使用 docker stop [容器ID] 停止指定ID容器,再使用 docker rm [容器ID] 删除指定ID的容器,结果状态为删除状态(deleted)。

三、结语

  以上就是 Docker 的生命周期的几种状态、状态间的转换说明,在本文中,我们探讨了容器生命周期的每个阶段,从创建、启动、运行,到暂停、继续、停止和删除。学习 Docker,掌握生命周期,对于学习 Docker,至关重要。通过对容器的各个生命周期阶段进行深入的了解,我们能够更好地构建稳定、可靠的容器化应用,从而提高开发和运维的效率。

把今天最好的表现当作明天最新的起点…….~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1923648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分手后如何走出夜晚的抑郁,告别失眠困扰?

在这个快速变化的世界里,分手成为了许多人生活中不得不面对的现实。而每当夜幕降临,那种难以言表的孤独感和深深的抑郁往往让人倍感煎熬,甚至陷入失眠的漩涡。那么,分手后我们该如何应对这种情绪困扰,重新找回自己的宁…

防火墙NAT和智能选路实验详解(华为)

目录 实验概述实验拓扑实验要求要求一要求二要求三要求四要求五 实验概述 从我上面一个博客能够了解到NAT和防火墙选路原理 ——>防火墙nat和智能选路,这一章我通过实验来详解防火墙关于nat和智能选路从而能熟练使用和配置防火墙,这里使用的是华为US…

lvs集群、NAT模式和DR模式、keepalive

目录 lvs集群概念 集群的类型:三种类型 系统可靠性指标 lvs集群中的术语 lvs的工作方式 NAT模式 lvs的工具 算法 实验 数据流向 步骤 一 、调度器配置(test1 192.168.233.10) 二、RS配置(nginx1和nginx2)…

Android:如何绘制View

点击查看Android 如何绘制视图官网 一、简介 Android 框架会在 Activity 获得焦点时请求 Activity 绘制其布局。Android 框架会处理绘制流程,但该 Activity 必须提供其布局层次结构的根节点。 Android 框架会绘制布局的根节点,并测量和绘制布局树。它会…

【每日一练】python类和对象现实举例详细讲解

""" 本节课程目的: 1.掌握类描述现实世界实物思想 2.掌握类和对象的关系 3.理解什么事面向对象 """ #比如设计一个闹钟,在这里就新建一个类 class Clock:idNone #闹钟的序列号,也就是类的属性priceNone #闹…

Redis学习笔记(个人向)

Redis学习笔记(个人向) 1. 概述 是一个高性能的 key-value 数据库;其具有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据&…

Nginx+Keepalive调度的高可用

nginxkeepalive: 调度器的高可用 vip地址主备之间的切换,主在工作时,p地址只在主上,主停止工作,p飘移到备服务器。 在主备的优先级不变的情况下,主恢复工作,vp会飘回到主服务器。 1、配优先级 2、配置…

EventBus学习

视频:05_尚硅谷_EventBus_粘性事件案例_哔哩哔哩_bilibili 1.整体框架 2.demo下载地址:https://github.com/greenrobot/EventBus 3.实现非粘性时间流程: 3.1导入架包eventbus-3.0.0.jar和eventbus-3.0.0-sources.jar 3.2在接受数据页面注…

k8s(五)---名称空间

五、名称空间 名称空间是k8s划分不同工作空间的逻辑单位,是k8s资源逻辑隔离的机,。可以给不同的租户,不同的环境、不同的项目创建对应的命名空间。 1、查看名称空间 kubectl get ns kubectl get namespaces 此处展示了四个命名空间 2、管理名称空间 1…

更新商品前端接口编写

文章目录 新增页面书写写表单价格符号的显示然后状态的书写后端枚举书写时间书写使用组件 新增页面书写 书写直接复制页面 写表单的绑定信息 然后绑定表单 表单绑定还有表单数据的绑定 标签中ref的作用就是将 该组件注册到vue对象的ref属性中 那么在vue运行的时候,会加载所…

IOC、DI<4> Unity、AOP、MVCAOP、UnityAOP 区别

IOC():控制反转,把程序上层对下层的依赖,转移到第三方的容器来装配 是程序设计的目标,实现方式包含了依赖注入和依赖查找(.net里面只有依赖注入) DI:依赖注入&#xff0c…

【网络文明】关注网络安全

在这个数字化时代,互联网已成为我们生活中不可或缺的一部分,它极大地便利了我们的学习、工作、娱乐乃至日常生活。然而,随着网络空间的日益扩大,网络安全问题也日益凸显,成为了一个不可忽视的全球性挑战。认识到网络安…

Gitee简易使用流程(后期优化)

目录 1.修改用户名 2.文件管理 新建文件/文件夹流程如下: 上传文件流程如下: 以主页界面为起点 1.修改用户名 点解右上角的头像--> 点击“账号设置” 点击左边栏里的“个人资料“ 直接修改用户名即可 2.文件管理 选择一个有修改权限仓库&#…

【轻松拿捏】Java-final关键字(面试)

目录 1. 定义和基本用法 回答要点: 示例回答: 2. final 变量 回答要点: 示例回答: 3. final 方法 回答要点: 示例回答: 4. final 类 回答要点: 示例回答: 5. final 关键…

yolov8预测

yoloV8 官方地址 预测 -Ultralytics YOLO 文档 1.图片预测 from ultralytics import YOLO #### 图片预测1 ### https://www.youtube.com/watch?vneBZ6huolkg ### https://github.com/ultralytics/ultralytics ### https://github.com/abdullahtarek/football_analysis…

Linux C语言基础 day10

目录 学习目标: 学习内容: 1.指针指向数组 1.1 指针与数组的关系 1.2 指针与一维数组关系实现 1.2.1 指针与一维数组的关系 1.2.2 指针指向一维整型数组作为函数参数传递 课外作业: 学习目标: 一周掌握 C基础知识 学习内…

专业条码二维码扫描设备和手机二维码扫描软件的区别?

条码二维码技术已广泛应用于我们的日常生活中,从超市结账到公交出行,再到各类活动的入场验证,条码二维码的便捷性不言而喻,而在条码二维码的扫描识别读取过程中,专业扫描读取设备和手机二维码扫描软件成为了两大主要工…

uniapp使用多列布局显示图片,一行两列

完整代码&#xff1a; <script setup>const src "https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg" </script><template><view class"content"><view class"img-list"><image :src"src…

日志自动分析-操作系统-GscanLogonTracerf8x

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

TCP连接的三次握手和断开的四次挥手

TCP连接的建立过程通过三次握手完成&#xff0c;‌而连接的关闭过程则通过四次挥手完成。‌ 三次握手&#xff1a;‌这是TCP连接建立的过程&#xff0c;‌主要目的是确保双方都准备好进行数据传输。‌具体步骤如下&#xff1a;‌ 客户端向服务器发送一个SYN报文&#xff0c;‌请…