如何使用 docker compose config 命令验证和查看 compose 文件

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 docker-compose config 命令来验证和查看 Docker Compose 文件。我们将从安装 Docker Compose 开始,然后创建一个基础的 compose 文件。

接着,你会使用 docker-compose config 命令来验证 compose 文件的语法,查看解析后的 YAML 和 JSON 格式配置,并提取特定信息(如服务名称和镜像名称)。本实验将帮助你掌握高效处理 Docker Compose 文件的核心技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-555074{{"如何使用 docker compose config 命令验证和查看 compose 文件"}} docker/ls -.-> lab-555074{{"如何使用 docker compose config 命令验证和查看 compose 文件"}} docker/ps -.-> lab-555074{{"如何使用 docker compose config 命令验证和查看 compose 文件"}} docker/images -.-> lab-555074{{"如何使用 docker compose config 命令验证和查看 compose 文件"}} docker/info -.-> lab-555074{{"如何使用 docker compose config 命令验证和查看 compose 文件"}} docker/version -.-> lab-555074{{"如何使用 docker compose config 命令验证和查看 compose 文件"}} docker/build -.-> lab-555074{{"如何使用 docker compose config 命令验证和查看 compose 文件"}} end

验证基础 compose 文件

在本步骤中,你将学习如何验证基础的 Docker Compose 文件。开始之前,我们需要先安装 Docker Compose,因为当前环境中并未预装该工具。

首先下载 Docker Compose 二进制文件。我们将下载 1.29.2 版本,这是一个稳定且广泛使用的版本。

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

该命令会从 GitHub 官方仓库下载 Docker Compose 二进制文件,并保存到 /usr/local/bin/docker-compose。其中 $(uname -s)$(uname -m) 会自动检测你的操作系统和架构以下载正确的二进制文件。

接着需要为下载的二进制文件添加可执行权限。

sudo chmod +x /usr/local/bin/docker-compose

该命令使得 docker-compose 命令可执行。

现在通过检查版本来验证安装是否成功。

docker-compose --version

你应该会看到类似 docker-compose version 1.29.2, build 5becea4c 的输出,这表示 Docker Compose 已正确安装。

接下来创建一个简单的 Docker Compose 文件。我们将在你的 ~/project 目录下创建名为 docker-compose.yml 的文件。

nano ~/project/docker-compose.yml

向文件中添加以下内容:

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

这是一个非常基础的 Docker Compose 文件。它定义了一个名为 web 的服务,使用 nginx:latest 镜像,并将主机的 80 端口映射到容器的 80 端口。

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

在运行 compose 文件前,最好先验证其语法。Docker Compose 提供了 config 命令来实现这个功能。

docker-compose config

如果你的 docker-compose.yml 文件语法正确,该命令会以 YAML 格式输出解析后的配置。如果存在语法错误,则会打印错误信息指出问题所在。这能帮助你在尝试构建或运行服务前及时发现错误。

查看解析后的 YAML 格式配置

在上一步中,我们使用 docker-compose config 命令验证了 docker-compose.yml 文件的语法。默认情况下,该命令会以 YAML 格式输出解析后的配置。这对于查看 Docker Compose 最终使用的配置非常有用,包括来自多个 compose 文件的默认值或合并结果。

让我们再次运行该命令查看输出。请确保你位于创建 docker-compose.yml 文件的 ~/project 目录中。

cd ~/project
docker-compose config

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

services:
  web:
    build:
      context: /home/labex/project
    image: nginx:latest
    ports:
      - published: 80
        target: 80
version: "3.8"

注意输出中包含 build 部分,其中 context 被设置为 /home/labex/project。尽管我们没有在 docker-compose.yml 中明确定义 build 部分,Docker Compose 仍会添加一个默认的构建上下文,即包含 compose 文件的目录。这就是 docker-compose config 展示 解析后 配置(包括默认值)的一个示例。

以 YAML 格式查看解析后的配置有助于调试和准确理解 Docker Compose 如何解释你的文件。

查看解析后的 JSON 格式配置

在上一步中,我们了解了 docker-compose config 默认以 YAML 格式输出解析后的配置。有时以 JSON 格式查看配置会很有用,特别是当你需要与处理 JSON 的工具或脚本配合使用时。

docker-compose config 命令提供了 --format 标志来指定输出格式。要获取 JSON 格式的输出,我们使用 --format json

请确保你位于 ~/project 目录中。

cd ~/project
docker-compose config --format json

你应该会看到解析后的配置以 JSON 格式打印到控制台。输出内容大致如下(具体格式可能略有差异):

{
  "services": {
    "web": {
      "build": {
        "context": "/home/labex/project"
      },
      "image": "nginx:latest",
      "ports": [
        {
          "published": 80,
          "target": 80
        }
      ]
    }
  },
  "version": "3.8"
}

将此输出与上一步的 YAML 输出对比,你会发现它们表示的是相同的配置,只是数据格式不同。根据你的需求,这两种格式都很有用。

当需要将 Docker Compose 与其他工具集成,或对配置进行程序化处理时,以 JSON 格式查看配置会特别有帮助。

仅打印服务名称

在这一步中,我们将学习如何使用 docker-compose config 命令仅打印 compose 文件中定义的服务名称。当你需要快速获取服务列表而不需要完整的配置详情时,这个功能会很有用。

docker-compose config 命令提供了 --services 标志专门用于此目的。它会解析 compose 文件并仅输出服务名称,每行一个。

请确保你位于 ~/project 目录中。

cd ~/project
docker-compose config --services

由于我们的 docker-compose.yml 文件目前只包含一个名为 web 的服务,该命令的输出将是:

web

如果你的 compose 文件中定义了多个服务,每个服务名称都会单独显示一行。例如,如果你有名为 webdbapp 的服务,输出将会是:

web
db
app

这个标志是快速列出 Docker Compose 项目中定义的所有服务的便捷方式。

仅打印镜像名称

在这最后一步中,我们将学习如何使用 docker-compose config 命令仅打印 compose 文件中定义的服务所使用的镜像名称。这对于快速查看项目依赖的镜像非常有用。

docker-compose config 命令提供了 --images 标志来实现这一功能。它会解析 compose 文件并仅输出镜像名称,每行一个。

请确保你位于 ~/project 目录中。

cd ~/project
docker-compose config --images

由于我们的 docker-compose.yml 文件为 web 服务使用了 nginx:latest 镜像,该命令的输出将是:

nginx:latest

如果你的 compose 文件中使用了多个不同的镜像,每个镜像名称都会单独显示一行。例如,如果你有服务使用了 nginx:latestmysql:5.7python:3.9,输出将会是:

nginx:latest
mysql:5.7
python:3.9

这个标志可以让你快速了解 Docker Compose 项目所需的镜像概况。

总结

在本实验中,你学习了如何通过下载二进制文件并授予可执行权限来安装 Docker Compose,并通过检查版本号验证了安装。接着你创建了一个基础的 docker-compose.yml 文件,定义了一个使用 Nginx 镜像的简单 web 服务。最后,你使用 docker-compose config 命令验证了 compose 文件的语法,确保在部署前文件格式正确。