如何使用 docker compose images 命令列出镜像

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 docker compose images 命令来列出 docker-compose.yml 文件中定义的服务所使用的 Docker 镜像。我们将从准备一个简单的 docker-compose.yml 文件开始,然后使用 docker compose up 命令启动服务。

之后,我们将探索多种列出镜像的方式。你将学习如何列出已创建容器使用的所有镜像、如何使用静默选项仅列出镜像 ID,以及如何以 JSON 格式列出镜像以便于解析。这种实践操作将帮助你掌握在 Docker Compose 项目中管理镜像的实际技能。


Skills Graph

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

准备一个简单的 docker-compose.yml 文件

在本步骤中,我们将准备一个简单的 docker-compose.yml 文件。开始之前,我们需要先安装 Docker Compose。Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过 Compose,你可以使用 YAML 文件来配置应用服务,然后只需一条命令就能根据配置创建并启动所有服务。

首先,让我们安装 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 version v2.20.2 的输出。

接下来,我们将为项目创建目录并进入该目录。

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

现在,我们将使用 nano 编辑器创建 docker-compose.yml 文件。该文件将使用 nginx 镜像定义一个简单的 web 服务。

nano docker-compose.yml

nano 编辑器中,粘贴以下内容:

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

让我们解析这个 docker-compose.yml 文件:

  • version: '3.8' 指定了 Compose 文件格式版本
  • services: 定义了我们应用的服务
  • web: 是我们的服务名称
  • image: nginx:latest 指定了该服务使用的 Docker 镜像,这里我们使用最新版的 nginx 镜像
  • ports: 映射主机和容器之间的端口,"80:80" 将主机的 80 端口映射到容器的 80 端口

Ctrl + X,然后按 Y,最后按 Enter 保存文件。

在启动服务前,我们需要先拉取 nginx:latest 镜像。

docker pull nginx:latest

这条命令会从 Docker Hub 下载 nginx:latest 镜像。

启动 docker-compose.yml 文件中定义的服务

在本步骤中,我们将启动 docker-compose.yml 文件中定义的服务。我们将使用 docker-compose up 命令来构建、创建并启动这些服务。

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

cd ~/project/my-docker-app

现在,运行以下命令以在后台模式(detached mode)下启动服务。

docker-compose up -d

-d 参数表示以分离模式运行容器,即容器将在后台运行,不会占用你的终端。

你应该能看到输出信息,表明 web 服务正在被创建和启动。

要验证容器是否正在运行,可以使用 docker ps 命令。

docker ps

你应该能看到一个名为 my-docker-app-web-1 的容器(或类似名称,取决于项目目录名),使用的是 nginx 镜像,状态应为 Up

我们还可以通过 curl 访问 80 端口的 localhost 来检查 web 服务器是否可访问。

curl http://localhost:80

你应该能在终端看到 Nginx 默认欢迎页面的 HTML 输出,这确认了 web 服务器正在运行且可访问。

列出已创建容器使用的镜像

在本步骤中,我们将列出当前系统中的 Docker 镜像,特别关注我们刚创建的容器所使用的镜像。docker images 命令用于列出镜像信息。

运行以下命令来列出所有镜像:

docker images

你将看到一个包含镜像信息的表格,包括 REPOSITORY(仓库)、TAG(标签)、IMAGE ID(镜像 ID)、CREATED(创建时间)和 SIZE(大小)。你应该能在列表中看到 nginx 镜像。

该输出显示了你的系统上已拉取或构建的镜像。nginx 镜像是在前一步骤中拉取的,现在正被运行的容器所使用。

使用静默选项仅列出镜像 ID

在本步骤中,我们将学习如何通过 docker images 命令配合静默选项仅列出镜像 ID。当你需要获取镜像 ID 列表用于脚本编写或其他用途时,这个功能非常实用。

静默选项通过 -q 参数指定。

运行以下命令来仅列出镜像 ID:

docker images -q

你将看到每行显示一个镜像 ID 的简洁列表。这个输出比 docker images 的完整输出要精简得多。

当你需要以编程方式处理镜像列表时(例如删除旧镜像),这个选项特别有用。

以 JSON 格式列出镜像

在本步骤中,我们将学习如何以 JSON 格式列出 Docker 镜像。当你需要使用 jq 等工具以编程方式解析输出时,这个功能非常实用。

我们可以通过 docker images 命令配合 --format 选项来指定输出格式。要获取 JSON 格式的输出,我们使用 json 关键字。

运行以下命令以 JSON 格式列出镜像:

docker images --format json

你将看到 JSON 格式的输出,这是一种结构化的镜像信息表示方式。每个镜像都将以 JSON 对象的形式出现在 JSON 数组中。

这种格式非常适合将 Docker 镜像信息集成到能够处理 JSON 数据的脚本或其他应用程序中。

完成本步骤后,你可以选择停止正在运行的容器并删除项目目录。

要停止容器,请导航回 ~/project/my-docker-app 目录并运行:

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

该命令将停止并移除由 docker-compose up 创建的容器、网络和卷。

要删除项目目录,可以使用 rm 命令:

cd ~/project
rm -rf my-docker-app

总结

在本实验中,我们学习了如何使用 docker compose images 命令来列出 docker-compose.yml 文件中定义的服务所使用的镜像。我们首先准备了一个简单的 docker-compose.yml 文件,定义了一个使用 nginx 镜像的 web 服务,包括安装 Docker Compose 和创建必要的文件结构。

接着我们启动了 docker-compose.yml 文件中定义的服务。最后,我们探索了多种列出已创建容器所用镜像的方法,包括列出所有镜像详细信息、使用静默选项仅列出镜像 ID,以及以 JSON 格式列出镜像。