如何使用 docker compose ls 命令列出 Compose 项目

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何高效使用 docker compose ls 命令来列出和管理你的 Docker Compose 项目。我们将从搭建一个示例 Compose 项目开始,包括安装 Docker Compose(如需要)、创建 docker-compose.yml 文件以及启动项目。

完成项目搭建后,你将探索使用 docker compose ls 列出 Compose 项目的多种方式。这包括仅列出运行中的项目、列出所有项目(包含已停止的)、仅显示项目名称,以及根据特定条件筛选项目。通过本实验,你将熟练掌握使用 docker compose ls 命令来查看 Compose 环境的状态。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ls -.-> lab-555083{{"如何使用 docker compose ls 命令列出 Compose 项目"}} docker/ps -.-> lab-555083{{"如何使用 docker compose ls 命令列出 Compose 项目"}} docker/pull -.-> lab-555083{{"如何使用 docker compose ls 命令列出 Compose 项目"}} end

启动示例 Compose 项目

在本步骤中,我们将学习如何启动一个示例 Compose 项目。在使用 Docker Compose 之前,需要先安装它。由于 LabEx 的 VM 环境没有预装 Docker Compose,我们需要先进行安装。

我们将下载 Docker Compose 二进制文件并赋予可执行权限。

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

安装完成后,可以通过检查 Docker Compose 版本来验证安装是否成功。

docker-compose --version

你应该能在控制台看到版本信息,这表示 Docker Compose 已正确安装。

现在,让我们创建一个简单的 Compose 项目。首先为项目创建目录,然后在其中创建 docker-compose.yml 文件。该文件将定义我们应用程序的服务。

首先创建一个名为 my-compose-app 的目录。

mkdir ~/project/my-compose-app
cd ~/project/my-compose-app

接下来,使用 nano 编辑器在 ~/project/my-compose-app 目录下创建 docker-compose.yml 文件。

nano docker-compose.yml

将以下内容添加到 docker-compose.yml 文件中。该文件定义了一个名为 web 的服务,使用 nginx 镜像。

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

保存文件并退出 nano 编辑器(按 Ctrl + X,然后按 Y,最后按 Enter)。

在启动服务之前,需要确保本地有 nginx:latest 镜像。可以使用 docker pull 命令拉取该镜像。

docker pull nginx:latest

现在我们有了 docker-compose.yml 文件和所需的镜像,可以使用 docker-compose up 命令启动 Compose 项目。-d 参数表示以分离模式运行服务,即在后台运行。

docker-compose up -d

该命令将根据 docker-compose.yml 文件创建并启动 web 服务。你应该能看到服务正在创建和启动的输出信息。

要验证服务是否正在运行,可以使用 docker ps 命令列出运行中的容器。你应该能看到 web 服务的容器。

docker ps

你也可以通过浏览器访问 LabEx VM 的 IP 地址来访问 Nginx 服务器。由于我们将容器的 80 端口映射到了主机的 80 端口,你应该能看到默认的 Nginx 欢迎页面。

使用 docker compose ls 列出运行中的 Compose 项目

在前一步骤中,我们启动了一个名为 my-compose-app 的示例 Compose 项目。现在,我们将学习如何使用 docker compose ls 命令来列出运行中的 Compose 项目。

docker compose ls 命令用于列出所有 Compose 项目。默认情况下,它仅显示正在运行的项目。

请确保你位于 docker-compose.yml 文件所在的 ~/project/my-compose-app 目录下。

cd ~/project/my-compose-app

现在执行 docker compose ls 命令。

docker compose ls

你应该能看到类似以下的输出:

NAME              STATUS    CONFIG FILES
my-compose-app    running   docker-compose.yml

该输出显示有一个名为 my-compose-app 的 Compose 项目正在运行,它使用的是 docker-compose.yml 配置文件。

docker compose ls 命令可以快速查看当前有哪些 Compose 项目处于活跃状态并运行着容器。

使用 docker compose ls -a 列出所有 Compose 项目(包括已停止的)

在前一步骤中,我们列出了运行中的 Compose 项目。默认情况下,docker compose ls 仅显示至少有一个容器正在运行的项目。要查看所有 Compose 项目(包括已停止的项目),我们需要使用 -a 参数。

首先,让我们停止第一步中启动的 my-compose-app 项目。请确保你位于 ~/project/my-compose-app 目录下。

cd ~/project/my-compose-app

现在使用 docker-compose down 命令停止项目。该命令会停止并移除由 docker-compose up 创建的容器、网络和卷。

docker-compose down

你应该能看到显示服务和资源正在被停止和移除的输出信息。

现在项目已停止,让我们再次使用默认的 docker compose ls 命令列出 Compose 项目。

docker compose ls

这次,你应该看不到 my-compose-app 项目被列出,因为它已经停止。

现在,让我们使用 docker compose ls -a 命令列出所有 Compose 项目,包括已停止的项目。

docker compose ls -a

你现在应该能看到类似以下的输出:

NAME              STATUS     CONFIG FILES
my-compose-app    exited     docker-compose.yml

该输出显示 my-compose-app 项目存在,尽管其状态为 exited(已停止)。-a 参数对于查看系统中定义的所有 Compose 项目非常有用,无论它们当前处于什么状态。

使用 docker compose ls -q 仅列出项目名称

在前面的步骤中,我们列出了 Compose 项目及其状态和配置文件。有时你可能只需要项目名称列表,例如用于脚本中。docker compose ls -q 命令可以实现这一需求。

-q 参数表示"quiet"(静默),它会抑制所有输出,只显示项目名称。

请确保你位于 ~/project/my-compose-app 目录下。

cd ~/project/my-compose-app

现在执行 docker compose ls -q 命令。

docker compose ls -q

你应该只会看到 Compose 项目名称输出到控制台:

my-compose-app

当你需要获取干净的项目名称列表而不需要额外信息时,这个功能非常有用。你可以将 -q 参数与 -a 参数结合使用,列出所有 Compose 项目的名称(包括已停止的项目)。

让我们试一下:

docker compose ls -a -q

你仍然会看到:

my-compose-app

这证实了 -q 参数只会输出项目名称,无论项目是运行中还是已停止(当与 -a 参数结合使用时)。

使用 docker compose ls --filter 筛选 Compose 项目

在这最后一步中,我们将探索如何使用 --filter 参数来筛选 docker compose ls 的输出结果。当你拥有多个 Compose 项目并希望根据特定条件查找特定项目时,这个功能非常有用。

--filter 参数允许你指定键值对来筛选结果。最常用的筛选条件是 status(状态)。

首先,让我们确认 my-compose-app 项目已停止。虽然我们在上一步已经停止了它,但再次确认是个好习惯。

cd ~/project/my-compose-app
docker-compose down

现在,让我们使用 --filter 参数来仅列出运行中的 Compose 项目。由于我们的项目已停止,这个命令应该不会显示任何结果。

docker compose ls --filter status=running

你应该看不到任何输出,因为当前没有运行中的 Compose 项目。

接下来,我们使用 --filter 参数来仅列出已停止的 Compose 项目。

docker compose ls --filter status=exited

你应该会看到类似以下的输出:

NAME              STATUS     CONFIG FILES
my-compose-app    exited     docker-compose.yml

这表明 my-compose-app 项目被列出,因为它的状态是 exited(已停止)。

你还可以根据其他条件进行筛选,例如项目 name(名称)。让我们筛选名为 my-compose-app 的项目。

docker compose ls --filter name=my-compose-app

这同样会显示 my-compose-app 项目:

NAME              STATUS     CONFIG FILES
my-compose-app    exited     docker-compose.yml

--filter 参数提供了一种强大的方式来管理和查看你的 Compose 项目,特别是在使用多个 Compose 文件定义不同应用的环境中。

总结

在本实验中,我们学习了如何使用 docker compose ls 命令来列出 Docker Compose 项目。我们首先安装了 Docker Compose,然后使用 docker-compose.yml 文件和 docker-compose up -d 命令创建并启动了一个示例 Compose 项目。

接着我们探索了 docker compose ls 命令的不同选项。我们使用 docker compose ls 列出运行中的项目,使用 docker compose ls -a 列出所有项目(包括已停止的),使用 docker compose ls -q 仅列出项目名称,以及使用 docker compose ls --filter 根据特定条件筛选项目。这些步骤展示了 docker compose ls 命令在管理和检查 Compose 项目时的多功能性。