1. 概述

Docker 是一个广受欢迎的容器化平台,它为应用的开发、测试和部署提供了一致且高效的运行环境。Docker 容器是一种轻量级、独立且可执行的打包方式,包含了运行特定应用所需的所有代码、运行时、系统工具和库文件等

在使用 Docker 的过程中,保持环境的整洁对于开发、测试和部署流程的一致性至关重要。因此,当某些容器不再需要时,我们应当及时停止并删除它们,以释放系统资源,提升工作效率。

本文将介绍如何停止并删除正在运行的 Docker 容器,包括单个、多个以及全部容器的操作方法。


2. 查看正在运行的容器

首先,我们需要确认当前系统中有哪些容器正在运行。可以使用如下命令列出所有运行中的容器:

$ docker container list
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS          PORTS      NAMES
d5e1395abb0c   nginx     "/docker-entrypoint.…"   24 hours ago   Up 3 minutes    80/tcp     nginx_Cont
37e8afba61e8   redis     "docker-entrypoint.s…"   24 hours ago   Up 14 minutes   6379/tcp   redis_Cont
1c36849daf98   ubuntu    "/bin/bash -c 'sleep…"   24 hours ago   Up 56 minutes              Cont1
495b6da20c9e   ubuntu    "/bin/bash -c 'sleep…"   24 hours ago   Up 6 minutes               ubuntu_Cont

输出中包含以下信息:

  • CONTAINER ID:容器唯一标识符
  • IMAGE:容器所基于的镜像
  • COMMAND:启动容器时执行的命令
  • CREATED:容器创建时间
  • STATUS:当前状态(运行时长)
  • PORTS:端口映射信息
  • NAMES:容器名称

也可以使用简写命令:

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS          PORTS      NAMES
d5e1395abb0c   nginx     "/docker-entrypoint.…"   24 hours ago   Up 3 minutes    80/tcp     nginx_Cont
37e8afba61e8   redis     "docker-entrypoint.s…"   24 hours ago   Up 14 minutes   6379/tcp   redis_Cont
1c36849daf98   ubuntu    "/bin/bash -c 'sleep…"   24 hours ago   Up 56 minutes              Cont1
495b6da20c9e   ubuntu    "/bin/bash -c 'sleep…"   24 hours ago   Up 6 minutes               ubuntu_Cont

3. 停止运行中的 Docker 容器

使用 docker stop 命令可以停止一个或多个运行中的容器。

3.1 停止单个容器

可以通过容器 ID 或名称来停止单个容器。例如:

$ docker stop 37e8afba61e8
37e8afba61e8

也可以使用容器名称:

$ docker stop redis_Cont
redis_Cont

✅ 推荐使用名称,更易识别,避免 ID 混淆。

3.2 停止多个容器

可以一次停止多个容器,只需在命令中列出多个 ID 或名称即可:

$ docker stop 1c36849daf98 d5e1395abb0c 495b6da20c9e
1c36849daf98
d5e1395abb0c
495b6da20c9e

3.3 停止所有容器

要一次性停止所有运行中的容器,可以使用以下命令:

$ docker stop $(docker ps -aq)
d5e1395abb0c
37e8afba61e8
1c36849daf98
495b6da20c9e

⚠️ 注意:docker ps -aq 会列出所有容器(包括非运行状态),但搭配 docker stop 使用时,只会对运行中的容器生效。


4. 删除 Docker 容器

停止容器后,我们可以使用 docker rm 命令将其从系统中删除。

4.1 删除单个容器

$ docker rm d5e1395abb0c
d5e1395abb0c

也可以使用名称:

$ docker rm redis_Cont
redis_Cont

⚠️ 注意:只有已停止的容器才能被删除,否则会报错。

4.2 删除多个容器

$ docker rm 495b6da20c9e 37e8afba61e8 1c36849daf98
495b6da20c9e
37e8afba61e8
1c36849daf98

4.3 删除所有容器

要删除所有容器,可以使用以下命令:

$ docker rm $(docker ps -aq)
2f803cde883f
db801fa0ebce

5. 一条命令停止并删除容器

如果希望一步到位,可以使用 docker rm -f 命令,它会强制停止并删除容器

5.1 删除单个容器

$ docker rm -f test_Cont
test_Cont

5.2 删除所有容器

$ docker rm -f $(docker ps -q)
1cfcef7b368d
8839b7fee01d
907ccc7f9897

✅ 推荐用法:该命令适用于清理测试环境或快速重置状态。

⚠️ 警告:-f 参数会直接终止容器进程,可能造成数据丢失,请确保容器中无重要未持久化数据。


6. 总结

操作 命令
查看运行中的容器 docker ps
停止单个容器 docker stop <容器ID/名称>
停止多个容器 docker stop <容器ID1> <容器ID2>
停止所有容器 docker stop $(docker ps -aq)
删除单个容器 docker rm <容器ID/名称>
删除多个容器 docker rm <容器ID1> <容器ID2>
删除所有容器 docker rm $(docker ps -aq)
一步停止并删除单个容器 docker rm -f <容器ID/名称>
一步停止并删除所有容器 docker rm -f $(docker ps -q)

通过以上方法,你可以根据实际需求灵活地停止并删除 Docker 容器。无论是开发调试、自动化脚本还是环境清理,这些命令都十分实用。建议将常用组合保存为 shell 别名或脚本,提升操作效率。


原始标题:Stop and Delete Docker Container If It’s Currently Running