介绍
在本实验中,你将学习如何使用 docker compose images 命令来列出 docker-compose.yml 文件中定义的服务所使用的 Docker 镜像。我们将从准备一个简单的 docker-compose.yml 文件开始,然后使用 docker compose up 命令启动服务。
之后,我们将探索多种列出镜像的方式。你将学习如何列出已创建容器使用的所有镜像、如何使用静默选项仅列出镜像 ID,以及如何以 JSON 格式列出镜像以便于解析。这种实践操作将帮助你掌握在 Docker Compose 项目中管理镜像的实际技能。
准备一个简单的 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 格式列出镜像。



