安全停止和移除 Docker 容器

DockerDockerBeginner
立即练习

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

简介

本教程将指导你安全地停止并正确移除 Docker 容器的过程。无论你是初学者还是经验丰富的 Docker 用户,了解如何管理容器的生命周期对于维护健康高效的容器化环境至关重要。我们将探讨退出 Docker 容器的步骤,并确保你的应用程序顺利运行。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") subgraph Lab Skills docker/ps -.-> lab-398419{{"安全停止和移除 Docker 容器"}} docker/start -.-> lab-398419{{"安全停止和移除 Docker 容器"}} docker/stop -.-> lab-398419{{"安全停止和移除 Docker 容器"}} docker/rm -.-> lab-398419{{"安全停止和移除 Docker 容器"}} docker/logs -.-> lab-398419{{"安全停止和移除 Docker 容器"}} end

理解 Docker 容器

Docker 是一个广受欢迎的容器化平台,它允许开发者以一致且可重复的方式打包和部署应用程序。容器是轻量级、独立且自包含的单元,它们封装了应用程序及其依赖项,从而能够轻松地在任何安装了 Docker 的系统上运行该应用程序。

什么是 Docker 容器?

Docker 容器是由 Docker 镜像创建而来的,这些镜像本质上是定义容器内容的模板。这些镜像可以从头构建,也可以基于现有镜像构建,比如 Docker 社区或你自己的组织提供的镜像。

当你运行一个 Docker 容器时,它会创建镜像中定义的应用程序的一个新实例。每个容器都与主机系统和其他容器隔离开来,确保应用程序无论在何种底层基础设施上,都能一致且可预测地运行。

graph TD A[Docker 镜像] --> B[Docker 容器] B --> C[应用程序] B --> D[依赖项] B --> E[文件系统]

Docker 容器的优势

Docker 容器具有多项优势,这使得它们成为应用程序部署和开发的热门选择:

  1. 可移植性:Docker 容器可以在任何安装了 Docker 的系统上运行,确保在不同环境中具有一致的行为。
  2. 可扩展性:Docker 容器可以轻松地进行扩展或缩减,使你能够根据需求调整资源。
  3. 高效性:Docker 容器是轻量级的,比传统虚拟机使用的资源更少,运行起来更高效。
  4. 一致性:Docker 容器确保应用程序以相同的依赖项和配置进行部署,降低了部署过程中出现问题的风险。
  5. 隔离性:Docker 容器与主机系统和其他容器隔离开来,提高了安全性并防止应用程序之间发生冲突。

Docker 容器的实际应用

要创建并运行一个 Docker 容器,你可以使用 docker run 命令。例如,要运行一个 Ubuntu 22.04 容器,你可以使用以下命令:

docker run -it ubuntu:22.04 /bin/bash

此命令将从 Docker Hub 镜像仓库拉取 ubuntu:22.04 镜像,创建一个新容器,并在容器内启动一个交互式 shell 会话。

在容器内部,你可以安装并运行你的应用程序,以及管理其依赖项和配置。完成后,你可以通过输入 exit 来退出容器。

安全停止 Docker 容器

当你需要停止正在运行的 Docker 容器时,以安全且可控的方式进行操作很重要,这样可以避免潜在问题。Docker 提供了多个命令和选项来优雅地停止容器。

停止容器

要停止正在运行的 Docker 容器,你可以使用 docker stop 命令。此命令会向容器的主进程发送一个 SIGTERM 信号,使其有机会在容器停止之前执行任何必要的清理或关闭任务。

docker stop <容器名称或 ID>

默认情况下,docker stop 命令会等待最多 10 秒让容器停止。如果容器在该时间内未停止,Docker 将发送一个 SIGKILL 信号来强制容器停止。

优雅关闭

为了给容器更多时间来执行优雅关闭,可以在 docker stop 命令中使用 -t--time 选项。此选项指定在发送 SIGKILL 信号之前等待的秒数。

docker stop -t 60 <容器名称或 ID>

在这个例子中,Docker 在发送 SIGKILL 信号之前会等待最多 60 秒让容器停止。

停止多个容器

如果你需要一次停止多个容器,可以使用 docker stop 命令,并列出用空格分隔的容器名称或 ID 列表。

docker stop <容器 1 名称或 ID> <容器 2 名称或 ID> <容器 3 名称或 ID>

这将按照列出的顺序停止所有指定的容器。

自动停止容器

你还可以配置 Docker,使其在主机系统关闭或重启时自动停止容器。这可以通过在启动容器时设置 --restart 选项来完成。

docker run --restart=always <镜像名称>

--restart=always 选项确保如果容器因任何原因停止,包括系统关闭或重启,它将自动重启。

通过遵循这些停止 Docker 容器的最佳实践,你可以确保你的应用程序被优雅地关闭,将数据丢失或其他问题的风险降至最低。

正确移除 Docker 容器

在停止 Docker 容器之后,你可能想要将其从系统中移除。正确移除 Docker 容器对于释放系统资源以及维护一个干净、有序的 Docker 环境很重要。

移除单个容器

要移除单个 Docker 容器,你可以使用 docker rm 命令。此命令会从你的系统中移除指定的容器。

docker rm <容器名称或 ID>

如果容器仍在运行,你可以使用 -f--force 选项来强制移除该容器。

docker rm -f <容器名称或 ID>

移除多个容器

要一次性移除多个 Docker 容器,你可以向 docker rm 命令提供一个用空格分隔的容器名称或 ID 列表。

docker rm <容器 1 名称或 ID> <容器 2 名称或 ID> <容器 3 名称或 ID>

移除带有卷的容器

如果一个容器有相关联的卷,docker rm 命令默认不会移除这些卷。要移除容器及其卷,你可以使用 -v--volumes 选项。

docker rm -v <容器名称或 ID>

移除带有镜像的容器

当你移除一个容器时,相关联的镜像不会自动被移除。如果你想要移除容器及其镜像,可以在移除容器之后使用 docker rmi 命令。

docker rm <容器名称或 ID>
docker rmi <镜像名称或 ID>

移除悬空容器和镜像

随着时间的推移,你的系统上可能会积累悬空容器和镜像(即那些不再与任何正在运行的容器相关联的容器和镜像)。要移除它们,你可以使用以下命令:

## 移除悬空容器
docker container prune

## 移除悬空镜像
docker image prune

通过遵循这些移除 Docker 容器的最佳实践,你可以维护一个干净、有序的 Docker 环境,释放系统资源,并确保你的 Docker 设置保持高效且易于管理。

总结

在本教程结束时,你将对如何安全地停止和移除 Docker 容器有扎实的理解。你将学习退出 Docker 容器的最佳实践,确保你的容器化应用程序被正确关闭并回收资源。有了这些知识,你将能够自信地管理 Docker 容器的生命周期,为容器化基础设施的整体稳定性和效率做出贡献。