CodeGym /课程 /Docker SELF /检查容器状态

检查容器状态

Docker SELF
第 11 级 , 课程 2
可用

3.1 docker ps命令基础

docker ps命令是Docker工具箱中最有用的命令之一。它会显示正在运行的容器列表并提供它们的信息。这节课我们会详细介绍如何使用docker ps来检查你容器的状态以及有哪些参数可用来更详细地获取信息。

默认情况下,docker ps命令只会输出当前正在运行的容器列表。

语法

Terminal

docker ps [OPTIONS]

其中:

  • OPTIONS: 用于过滤和格式化输出的额外参数。

基本用法举例

Terminal


docker ps 

这个基础命令docker ps会输出所有正在运行的容器列表。输出内容包括以下字段:

  • CONTAINER ID: 容器的唯一标识符。
  • IMAGE: 用来创建容器的镜像。
  • COMMAND: 在容器中执行的命令。
  • CREATED: 容器创建的时间距离现在的间隔。
  • STATUS: 容器当前的状态(例如, Up 5 minutes)。
  • PORTS: 映射的端口。
  • NAMES: 容器的名称。

显示所有容器

要显示所有的容器,包括已停止的,请使用选项 -a:

Terminal


docker ps -a 

这个命令会输出有史以来所有容器的列表,显示当前的状态(运行中,已停止等)。

3.2 输出过滤

Docker 提供了对 docker ps 命令的输出进行过滤的功能,仅显示符合给定条件的容器。

1. 按状态过滤

例如,只显示已停止的容器:

Terminal


docker ps -f "status=exited" 

2. 按名称过滤

显示具有特定名称或其部分的容器:

Terminal


docker ps -f "name=my_container"

3. 按镜像过滤

显示由特定镜像创建的容器:

Terminal

docker ps -f "ancestor=nginx"

3.3 输出格式化

你可以自定义 docker ps 命令的输出,使之更加易读或者只包含你需要的字段。为此可以使用参数 --format

格式化示例

Terminal


docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

此示例输出一个表格,包含容器的 ID、名称和状态。

表格可用列

  • {{.ID}}: 容器 ID。
  • {{.Image}}: 容器镜像。
  • {{.Command}}: 容器中运行的命令。
  • {{.CreatedAt}}: 容器的创建时间。
  • {{.RunningFor}}: 容器运行的时间。
  • {{.Status}}: 容器的当前状态。
  • {{.Ports}}: 转发的端口。
  • {{.Names}}: 容器名称。

使用示例

示例 1: 仅显示容器 ID

此示例仅会输出运行中的容器 ID。适用于脚本中的使用。

Terminal


docker ps -q

示例 2: 显示过去 24 小时内启动的容器

Terminal


docker ps --filter "since=24h" 

示例 3: 按状态显示容器并格式化输出

此示例将输出一个表格,显示所有正在运行的容器的名称、状态和转发的端口。

Terminal


docker ps -f "status=running" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" 

3.4 实际情景

1. 监控正在运行的容器

当你有多个容器在运行时,命令docker ps可以让你快速检查它们的当前状态,确保一切正常运行。

Terminal


docker ps 

2. 查找并删除已停止的容器

容器在运行结束后会留在系统中,直到你删除它们。你可以使用docker ps -a来查找所有已停止的容器,然后将它们删除。

Terminal

docker ps -a -f "status=exited" 
docker rm $(docker ps -a -f "status=exited" -q)
    

3. 任务自动化

docker ps命令用在脚本中可以自动化处理容器管理的各种任务。例如,你可以生成容器状态报告,或者如果容器停止了,则自动重新启动容器。

Terminal

if [ $(docker ps -q -f "name=my_container") ]; then
  echo "Container is running"
else
  docker start my_container
fi
    

重要! 这个“代码”是在Linux终端中编写的。可能需要你先学习它。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION