如何停止 Docker 容器

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Docker 通过提供轻量级、可移植的容器化技术,彻底改变了软件部署方式。本教程重点介绍如何有效地停止 Docker 容器,探索管理容器生命周期的各种方法和最佳实践。无论你是开发者还是系统管理员,掌握容器控制对于维护高效且响应迅速的容器化环境至关重要。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/restart("Restart Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/run -.-> lab-493638{{"如何停止 Docker 容器"}} docker/ps -.-> lab-493638{{"如何停止 Docker 容器"}} docker/start -.-> lab-493638{{"如何停止 Docker 容器"}} docker/stop -.-> lab-493638{{"如何停止 Docker 容器"}} docker/restart -.-> lab-493638{{"如何停止 Docker 容器"}} docker/rm -.-> lab-493638{{"如何停止 Docker 容器"}} docker/create -.-> lab-493638{{"如何停止 Docker 容器"}} end

Docker 容器基础

什么是 Docker 容器?

Docker 容器是一个轻量级、独立且可执行的软件包,它包含运行应用程序所需的一切:代码、运行时环境、系统工具、库以及设置。容器在不同的计算平台上提供一致且可重现的环境。

Docker 容器的关键特性

特性 描述
隔离性 容器在隔离的环境中运行
可移植性 能够在不同系统上一致地运行
高效性 轻量级且共享主机系统的内核
可扩展性 易于快速扩展或缩减

容器架构

graph TD A[Docker 镜像] --> B[Docker 容器] C[主机操作系统] --> B D[Docker 引擎] --> B

创建 Docker 容器

要创建 Docker 容器,通常按以下步骤操作:

  1. 从 Docker Hub 拉取镜像
  2. 基于镜像创建容器
  3. 启动容器并与之交互

示例:创建 Ubuntu 容器

## 拉取 Ubuntu 镜像
docker pull ubuntu:22.04

## 创建并启动容器
docker run -it ubuntu:22.04 /bin/bash

## 列出正在运行的容器
docker ps

容器状态

Docker 容器可以处于不同状态:

  • 创建中
  • 运行中
  • 暂停
  • 已停止
  • 已退出

使用 Docker 容器的好处

  • 一致的开发环境
  • 简化部署
  • 提高资源利用率
  • 更快的应用交付
  • 支持微服务架构

开始使用 LabEx

对于 Docker 容器的实践操作,LabEx 提供交互式学习环境,帮助开发者高效掌握容器技术。

停止容器

为什么要停止容器?

停止容器对于管理系统资源、更新应用程序以及维护干净的 Docker 环境至关重要。有多种方法可以有效地停止 Docker 容器。

容器停止方法

方法 命令 描述
优雅停止 docker stop 发送 SIGTERM 信号,允许进行干净的关闭
立即停止 docker kill 发送 SIGKILL 信号,强制立即终止
停止所有容器 docker stop $(docker ps -q) 停止所有正在运行的容器

基本停止技术

停止单个容器

## 按名称或 ID 停止容器
docker stop container_name
docker stop 123abc456def

停止多个容器

## 停止多个容器
docker stop container1 container2 container3

容器停止工作流程

graph TD A[正在运行的容器] --> B{停止命令} B --> |优雅停止| C[SIGTERM 信号] B --> |强制停止| D[SIGKILL 信号] C --> E[容器停止] D --> E

高级停止选项

超时控制停止

## 使用自定义超时时间(30 秒)停止
docker stop -t 30 container_name

停止并移除容器

## 在一个命令中停止并移除容器
docker rm -f container_name

最佳实践

  • 始终优先使用 docker stop 而不是 docker kill
  • 使用超时时间进行优雅关闭
  • 移除已停止的容器以释放资源

LabEx 建议

LabEx 提供交互式实验来实践容器管理技术,帮助开发者高效掌握 Docker 容器生命周期管理。

容器生命周期

容器状态转换

Docker 容器在其生命周期中会经历各种状态,从创建到终止。了解这些状态有助于进行有效的容器管理。

stateDiagram-v2 [*] --> 创建 创建 --> 运行 运行 --> 暂停 暂停 --> 运行 运行 --> 停止 停止 --> 运行 停止 --> 删除 删除 --> [*]

容器状态概述

状态 描述 关键特性
创建 容器已初始化 未运行,资源已分配
运行 活动容器 正在执行应用程序
暂停 暂时挂起 进程冻结
停止 非活动容器 可重新启动
删除 完全删除 不再存在

生命周期管理命令

创建容器

## 从镜像创建容器
docker create nginx:latest
docker run -d nginx:latest

启动容器

## 启动已停止的容器
docker start container_name
docker restart container_name

暂停和恢复

## 暂停运行中的容器
docker pause container_name

## 恢复容器
docker unpause container_name

停止和删除

## 停止容器
docker stop container_name

## 删除容器
docker rm container_name

## 删除所有已停止的容器
docker container prune

高级生命周期管理

检查容器状态

## 详细的容器信息
docker inspect container_name

## 容器状态
docker ps -a

监控容器生命周期

## 观察容器事件
docker events

最佳实践

  • 实施适当的容器清理
  • 使用卷管理
  • 实施健康检查
  • 自动化生命周期管理

LabEx 学习路径

LabEx 提供全面的 Docker 生命周期管理课程,帮助开发者掌握容器编排和管理技术。

性能考量

  • 最小化容器启动时间
  • 优化容器大小
  • 实施高效的资源分配
  • 使用多阶段构建

结论

有效的容器生命周期管理对于维护高效、可扩展且可靠的容器化应用程序至关重要。

总结

停止 Docker 容器是容器管理中的一项基本技能。通过了解不同的停止技术、生命周期管理和命令选项,你可以优雅地终止容器、释放系统资源,并在基于 Docker 的基础设施中保持最佳性能。请记住,正确的容器控制对于维护一个干净、高效且响应迅速的容器化环境至关重要。