如何使用 docker container top 命令查看容器进程

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 docker container top 命令来检查 Docker 容器内运行的进程。首先,你将启动一个简单的容器作为运行环境。

接着,你将使用 docker container top 命令查看容器内的活动进程。最后,你将探索如何结合不同的 ps 选项使用 docker container top 命令,从而自定义输出并获取关于容器进程的更详细信息。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/top("Display Running Processes in Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555125{{"如何使用 docker container top 命令查看容器进程"}} docker/ps -.-> lab-555125{{"如何使用 docker container top 命令查看容器进程"}} docker/top -.-> lab-555125{{"如何使用 docker container top 命令查看容器进程"}} docker/pull -.-> lab-555125{{"如何使用 docker container top 命令查看容器进程"}} end

启动一个简单容器

在本步骤中,你将学习如何启动一个简单的 Docker 容器。Docker 容器是轻量级、可移植且自包含的单元,其中包含了运行应用程序所需的一切。

首先,让我们从 Docker Hub 拉取 hello-world 镜像。这是一个非常小的镜像,通常用于测试 Docker 是否正常工作。

docker pull hello-world

你应该能看到显示镜像正在被拉取和提取的输出信息。

现在,让我们基于 hello-world 镜像运行一个容器。

docker run hello-world

当你运行这个命令时,Docker 会从 hello-world 镜像创建一个新容器,并执行镜像中定义的命令。hello-world 镜像的设计目的是简单地向控制台打印一条消息然后退出。

你应该能看到类似这样的输出:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To discover more examples and ideas, visit:
 https://docs.docker.com/get-started/

这个输出确认 Docker 已在你的 LabEx 虚拟机上正确安装并运行。docker run 命令创建并启动了一个容器,该容器随后执行了它的任务并退出。

使用 docker container top 查看运行中的进程

在本步骤中,你将学习如何使用 docker container top 命令查看 Docker 容器内运行的进程。该命令类似于 Linux 系统中的 top 命令,但它专门显示容器内运行的进程。

首先,我们需要一个正在运行的容器。让我们启动一个简单的 ubuntu 容器并使其在后台保持运行。我们将使用 -d 标志以分离模式运行容器,并使用 sleep infinity 命令保持容器存活。

docker run -d ubuntu sleep infinity

你将看到一长串字符打印到控制台,这是容器的 ID。

现在,让我们使用 docker container top 后跟容器 ID 或名称来查看该容器内运行的进程。你可以通过运行 docker ps 获取容器 ID。

docker ps

从输出中复制 CONTAINER ID,然后在以下命令中用实际 ID 替换 <container_id>

docker container top <container_id>

你应该会看到类似以下的输出,显示容器内正在运行的 sleep infinity 进程:

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                7345                7331                0                   14:55               ?                   00:00:00            sleep infinity

输出显示了指定容器内运行的进程信息,包括用户 ID (UID)、进程 ID (PID)、父进程 ID (PPID)、CPU 使用率 (C)、启动时间 (STIME)、控制终端 (TTY)、累计 CPU 时间 (TIME) 以及正在执行的命令 (CMD)。在本例中,主进程是 sleep infinity

结合 ps 选项使用 docker container top 命令

在本步骤中,你将学习如何结合 ps 选项使用 docker container top 命令来自定义输出并查看容器内的特定进程信息。docker container top 命令支持标准的 ps 选项,允许你控制显示的列及其格式。

首先,请确保你已按照前一步骤运行了一个容器。可以通过运行 docker ps 命令进行验证:

docker ps

复制正在运行的 ubuntu 容器的 CONTAINER ID

现在,让我们结合一些 ps 选项来使用 docker container top 命令。例如,若只需显示进程 ID (pid) 和命令 (cmd),可以使用 -o 选项后接所需列名。请将 <container_id> 替换为你的容器 ID:

docker container top pid,cmd < container_id > -o

你将看到类似以下的输出,仅显示 PID 和 CMD 列:

PID                 CMD
7345                sleep infinity

你可以使用不同的 ps 选项来获取各类信息。例如,要查看 CPU 使用率 (%cpu) 和内存使用率 (%mem),可以使用:

docker container top pid,%cpu,%mem,cmd < container_id > -o

输出结果将包含容器内进程的 CPU 和内存使用情况:

PID                 %CPU                %MEM                CMD
7345                0.0                 0.0                 sleep infinity

如需查看完整的可用选项列表,可参考 ps 命令文档。通过结合 ps 选项使用 docker container top 命令,你可以灵活地监控容器内运行的进程并进行问题排查。

总结

在本实验中,你学习了与 Docker 容器交互的基本操作步骤。首先通过拉取并运行简单的 hello-world 镜像,这既是对 Docker 安装的基本测试,也演示了核心的 docker pulldocker run 命令。这一初始步骤展示了 Docker 如何获取镜像并创建容器来执行预定义任务。

随后,你接触到了 docker container top 命令。虽然未提供完整内容,但从步骤标题可以看出,你将学习如何使用该命令来检查容器内运行的进程,这与标准 Linux 环境中的 top 命令类似。最后的步骤「结合 ps 选项使用 docker container top 命令」则暗示了对该命令功能的进一步探索,可能展示了如何使用类似 ps 命令的选项来自定义输出格式。