Как использовать команду docker compose config для проверки и просмотра compose-файлов

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этой лабораторной работе вы научитесь использовать команду 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/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) 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

Эта команда загружает бинарный файл Docker Compose из официального репозитория GitHub и сохраняет его в /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 файл. Создадим файл docker-compose.yml в вашей директории ~/project.

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.yml с помощью команды docker-compose config. По умолчанию эта команда выводит итоговую конфигурацию в формате YAML. Это полезно для просмотра окончательной конфигурации, которую будет использовать Docker Compose, включая значения по умолчанию или объединение из нескольких compose-файлов.

Давайте снова выполним команду для просмотра вывода. Убедитесь, что находитесь в директории ~/project, где создавали файл docker-compose.yml.

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. Хотя мы явно не определяли раздел build в нашем docker-compose.yml, 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-выводом из предыдущего шага, можно заметить, что он представляет ту же конфигурацию, но в другом формате данных. Оба формата полезны в зависимости от ваших потребностей.

Просмотр конфигурации в формате JSON может быть особенно полезен при интеграции Docker Compose с другими инструментами или для программной обработки конфигурации.

Вывод только имён сервисов

На этом шаге мы научимся использовать команду docker-compose config для вывода только имён сервисов, определённых в нашем compose-файле. Это может быть полезно, когда вам нужен быстрый список сервисов без полных деталей конфигурации.

Команда docker-compose config имеет флаг --services, который делает именно это. Она проанализирует compose-файл и выведет только имена сервисов, по одному на строку.

Убедитесь, что находитесь в директории ~/project.

cd ~/project
docker-compose config --services

Поскольку в нашем файле docker-compose.yml в настоящее время есть только один сервис с именем web, вывод команды будет следующим:

web

Если бы в вашем compose-файле было определено несколько сервисов, каждое имя сервиса выводилось бы на новой строке. Например, если бы у вас были сервисы с именами web, db и app, вывод выглядел бы так:

web
db
app

Этот флаг — удобный способ быстро получить список сервисов, определённых в вашем проекте Docker Compose.

Вывод только имён образов

В этом завершающем шаге мы научимся использовать команду docker-compose config для вывода только имён образов, используемых сервисами из нашего compose-файла. Это полезно для быстрого просмотра зависимостей вашего проекта.

Команда docker-compose config имеет флаг --images, который выполняет эту задачу. Она проанализирует compose-файл и выведет только имена образов, по одному на строку.

Убедитесь, что находитесь в директории ~/project.

cd ~/project
docker-compose config --images

Поскольку наш файл docker-compose.yml использует образ nginx:latest для сервиса web, вывод команды будет следующим:

nginx:latest

Если бы у вас было несколько сервисов с разными образами, каждый образ выводился бы на новой строке. Например, для сервисов с образами nginx:latest, mysql:5.7 и python:3.9 вывод выглядел бы так:

nginx:latest
mysql:5.7
python:3.9

Этот флаг даёт быстрое представление об образах, требуемых вашим проектом Docker Compose.

Итоги

В этой лабораторной работе вы научились устанавливать Docker Compose, загружая бинарный файл и предоставляя ему права на выполнение, а также проверили установку, посмотрев версию. Затем вы создали базовый файл docker-compose.yml, определив в нём простой веб-сервис с использованием образа Nginx. В завершение вы использовали команду docker-compose config для проверки синтаксиса compose-файла, убедившись в его корректном формате перед развёртыванием.