Docker容器生命脉络docker start、stop、restart、kill 与 wait 命令
wptr33 2024-11-20 22:37 19 浏览
- docker start:启动容器
- docker stop:优雅地停止容器
- docker restart:重启容器
- docker kill: 结束容器
- docker wait: 等待容器停止,并退出状态
这些命令都直接涉及到容器运行状态的变更和监控,属于容器生命周期管理的核心操作。将它们放在同一部分讨论,有助于读者理解如何控制容器的终止过程以及如何同步地处理容器停止后的后续操作。
1. docker start:启动容器
docker start 命令用于启动一个或多个已停止的 Docker 容器。当需要恢复先前停止的服务、重新启动测试环境、继续进行未完成的任务或在维护后恢复容器运行时,此命令提供了便捷的容器启动机制。以下是使用 docker start 命令启动 hello-go 容器的示例:
假设有一个已停止的名为 hello-go 的容器,您希望将其启动,您可以使用以下命令:
? ~ docker start hello-go
在这条命令中,hello-go 是您要启动的已停止容器的名称。执行命令后,Docker 会重新启动该容器,使其进入运行状态。容器内的主进程将恢复执行,服务或应用程序将再次对外提供服务。
2. docker stop:优雅地停止容器
docker stop 命令用于优雅地停止一个或多个正在运行的 Docker 容器。在需要暂停服务、进行计划内维护、节约资源、或者遵循特定的业务流程时,此命令提供了安全、有序的容器停止机制。以下是使用 docker stop 命令停止 hello-go 容器的示例:
假设您有一个正在运行的名为 hello-go 的容器,您希望将其停止。您可以使用以下命令:
? ~ docker stop hello-go
在这条命令中,hello-go 是您要停止的正在运行容器的名称。执行命令后,Docker 会向容器内的主进程发送 SIGTERM 信号,请求其优雅地停止。大多数应用程序在接收到 SIGTERM 信号后,会开始清理资源、保存状态,并在完成这些操作后自行退出。如果容器内的主进程在指定的超时时间内(默认为 10 秒)仍未退出,Docker 将发送 SIGKILL 信号强制终止容器。
3. docker restart:重启容器
docker restart 命令用于重启一个或多个已运行或已停止的 Docker 容器。在需要刷新容器状态、应用配置更改、恢复故障服务或执行定期维护时,此命令提供了快速、便捷的容器重启机制。以下是使用 docker restart 命令重启 hello-go 容器的示例:
无论 hello-go 容器当前是运行中还是已停止状态,您都可以使用以下命令重启它:
? ~ docker restart hello-go
在这条命令中,hello-go 是您要重启的容器的名称。执行命令后,Docker 会执行以下操作:
- 停止容器(如果正在运行):向容器内的主进程发送 SIGTERM 信号,请求其优雅地停止。若容器在指定超时时间内(默认为 10 秒)未退出,Docker 将发送 SIGKILL 信号强制终止容器。
- 启动容器:在容器停止后,Docker 会重新启动该容器。容器内的主进程将恢复执行,服务或应用程序将再次对外提供服务。
4. docker kill: 结束容器
docker kill 命令为运维人员提供了即时、强制结束一个或多个运行中容器的能力。在遇到容器无响应、资源占用过高、需紧急下线服务等场景时,此命令能够迅速切断容器的运行状态。由于其非优雅终止的特性,应结合使用 docker stop(优雅停止)和其他管理命令,以实现对容器生命周期的最佳管理。
? ~ docker kill hello-go
在这条命令中,hello-go 是您要终止的容器名称。执行命令后,Docker 会向容器发送默认的 SIGKILL 信号,强制结束容器内的所有进程,从而停止容器运行。用 docker kill 命令时,容器内的应用程序可能无法完成必要的清理或保存状态操作,可能导致数据丢失或不一致。在涉及关键数据或需要确保服务平滑过渡的场景中,应优先考虑使用 docker stop 命令。
5. docker wait: 等待容器停止,并退出状态
docker wait 命令用于同步阻塞当前命令行,直至指定的容器停止运行,并在容器退出后返回其退出状态码。这一特性使得 docker wait 成为自动化脚本、持续集成/持续部署(CI/CD)流程、多容器协调任务、资源管理以及测试与调试环境中的关键工具,为管理和监控容器生命周期提供了可靠的同步点和状态反馈机制。
? ~ docker wait hello-go
运行该命令,hello-go会阻塞当前命令行。
打开另一个命令行运行
? ~ docker stop hello-go
hello-go
回到docker wait hello-go命令行
? ~ docker wait hello-go
2
这时候输出了2。
状态码:
- 0: 正常退出,无错误。
- 1-127: 非正常退出,通常表示程序运行时遇到错误。
- 128+n: 由信号 n 导致的退出,如 137 表示接收到 SIGKILL 信号而被强制终止。
本文探讨了五项关键的Docker容器生命周期管理命令:docker start、stop、restart、kill 和 wait,并通过示例详细展示了每项命令的使用场景、操作方式及预期效果。这些命令共同构成了对容器运行状态进行精细控制的核心工具集,为容器的启动、停止、重启、强制终止以及状态同步提供了强大支持,助力用户高效、安全地管理容器化应用的全生命周期。
忍不住要加个关注!不是我吹,但你会后悔没关注的!
相关推荐
- Python自动化脚本应用与示例(python办公自动化脚本)
-
Python是编写自动化脚本的绝佳选择,因其语法简洁、库丰富且跨平台兼容性强。以下是Python自动化脚本的常见应用场景及示例,帮助你快速上手:一、常见自动化场景文件与目录操作...
- Python文件操作常用库高级应用教程
-
本文是在前面《Python文件操作常用库使用教程》的基础上,进一步学习Python文件操作库的高级应用。一、高级文件系统监控1.1watchdog库-实时文件系统监控安装与基本使用:...
- Python办公自动化系列篇之六:文件系统与操作系统任务
-
作为高效办公自动化领域的主流编程语言,Python凭借其优雅的语法结构、完善的技术生态及成熟的第三方工具库集合,已成为企业数字化转型过程中提升运营效率的理想选择。该语言在结构化数据处理、自动化文档生成...
- 14《Python 办公自动化教程》os 模块操作文件与文件夹
-
在日常工作中,我们经常会和文件、文件夹打交道,比如将服务器上指定目录下文件进行归档,或将爬虫爬取的数据根据时间创建对应的文件夹/文件,如果这些还依靠手动来进行操作,无疑是费时费力的,这时候Pyt...
- python中os模块详解(python os.path模块)
-
os模块是Python标准库中的一个模块,它提供了与操作系统交互的方法。使用os模块可以方便地执行许多常见的系统任务,如文件和目录操作、进程管理、环境变量管理等。下面是os模块中一些常用的函数和方法:...
- 21-Python-文件操作(python文件的操作步骤)
-
在Python中,文件操作是非常重要的一部分,它允许我们读取、写入和修改文件。下面将详细讲解Python文件操作的各个方面,并给出相应的示例。1-打开文件...
- 轻松玩转Python文件操作:移动、删除
-
哈喽,大家好,我是木头左!Python文件操作基础在处理计算机文件时,经常需要执行如移动和删除等基本操作。Python提供了一些内置的库来帮助完成这些任务,其中最常用的就是os模块和shutil模块。...
- Python 初学者练习:删除文件和文件夹
-
在本教程中,你将学习如何在Python中删除文件和文件夹。使用os.remove()函数删除文件...
- 引人遐想,用 Python 获取你想要的“某个人”摄像头照片
-
仅用来学习,希望给你们有提供到学习上的作用。1.安装库需要安装python3.5以上版本,在官网下载即可。然后安装库opencv-python,安装方式为打开终端输入命令行。...
- Python如何使用临时文件和目录(python目录下文件)
-
在某些项目中,有时候会有大量的临时数据,比如各种日志,这时候我们要做数据分析,并把最后的结果储存起来,这些大量的临时数据如果常驻内存,将消耗大量内存资源,我们可以使用临时文件,存储这些临时数据。使用标...
- Linux 下海量文件删除方法效率对比,最慢的竟然是 rm
-
Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...
- Python 开发工程师必会的 5 个系统命令操作库
-
当我们需要编写自动化脚本、部署工具、监控程序时,熟练操作系统命令几乎是必备技能。今天就来聊聊我在实际项目中高频使用的5个系统命令操作库,这些可都是能让你效率翻倍的"瑞士军刀"。一...
- Python常用文件操作库使用详解(python文件操作选项)
-
Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能...
- 11. 文件与IO操作(文件io和网络io)
-
本章深入探讨Go语言文件处理与IO操作的核心技术,结合高性能实践与安全规范,提供企业级解决方案。11.1文件读写11.1.1基础操作...
- Python os模块的20个应用实例(python中 import os模块用法)
-
在Python中,...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)