Как использовать команду docker desktop module ls для вывода списка модулей

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

Введение

В этой лабораторной работе вы научитесь выводить список модулей Docker Desktop с помощью команды docker version. Мы рассмотрим различные способы просмотра этой информации, включая вывод всех модулей, отображение результатов в формате JSON и извлечение только идентификаторов модулей. Это практическое упражнение поможет вам понять компоненты вашей установки Docker и способы получения информации о них.

Вывести список всех модулей Docker Desktop

На этом шаге мы научимся выводить список всех модулей Docker Desktop с помощью команды docker version. Команда docker version предоставляет подробную информацию об установке Docker, включая клиентские и серверные компоненты, а также модули, входящие в состав Docker Desktop.

Чтобы вывести список всех модулей Docker Desktop, откройте терминал и выполните следующую команду:

docker version

Эта команда выведет множество информации о вашей установке Docker. Обратите внимание на разделы Client и Server. В этих разделах вы найдёте сведения о различных компонентах и модулях.

Например, вывод может выглядеть следующим образом (точный вывод может отличаться в зависимости от версии Docker и особенностей установки):

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        f2213a1
 Built:             Thu Oct 27 00:18:36 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       3056e8c
  Built:            Thu Oct 27 00:17:23 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.8
  GitCommit:        9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

В этом выводе вы можете увидеть информацию о Docker Engine, containerd, runc и docker-init. Это ключевые модули, составляющие среду Docker. Команда docker version является полезным инструментом для понимания различных компонентов вашей установки Docker и их версий.

Вывод модулей Docker Desktop в формате JSON

На предыдущем шаге мы использовали команду docker version для вывода списка модулей Docker Desktop. По умолчанию вывод представлен в удобочитаемом формате, но иногда может потребоваться структурированный вывод, например в формате JSON, для автоматической обработки или использования в скриптах.

Команда docker version поддерживает флаг --format, который позволяет указать формат вывода с использованием пакета text/template языка Go. Для получения вывода в формате JSON можно использовать шаблон json ..

Выполните следующую команду в терминале:

docker version --format '{{json .}}'

Эта команда выведет ту же информацию, что и docker version, но в формате JSON-объекта. Часть {{json .}} представляет собой шаблон, который указывает Docker отформатировать весь вывод (.) в JSON.

Результат будет представлен в виде одной строки JSON-данных, которая может выглядеть следующим образом (отформатировано для удобства чтения):

{
  "Client": {
    "Version": "20.10.21",
    "ApiVersion": "1.41",
    "GoVersion": "go1.16.15",
    "GitCommit": "f2213a1",
    "Built": "Thu Oct 27 00:18:36 2022",
    "OsArch": "linux/amd64",
    "Context": "default",
    "Experimental": true
  },
  "Server": {
    "Engine": {
      "Version": "20.10.21",
      "ApiVersion": "1.41",
      "MinAPIVersion": "1.12",
      "GoVersion": "go1.16.15",
      "GitCommit": "3056e8c",
      "Built": "Thu Oct 27 00:17:23 2022",
      "OsArch": "linux/amd64",
      "Experimental": false
    },
    "Containerd": {
      "Version": "1.6.8",
      "GitCommit": "9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b"
    },
    "Runc": {
      "Version": "1.1.4",
      "GitCommit": "v1.1.4-0-g5fd4c4d"
    },
    "DockerInit": {
      "Version": "0.19.0",
      "GitCommit": "de40ad0"
    }
  }
}

Данный JSON-вывод содержит ту же информацию, что и стандартный вывод, но в структурированном формате, который легко обрабатывается программами. Это особенно полезно, когда требуется извлечь определённые данные из вывода docker version в скриптах.

Вывод только ID модулей Docker Desktop

На предыдущих шагах мы научились выводить все модули Docker Desktop и форматировать вывод в JSON. Теперь давайте рассмотрим, как извлечь только определённую информацию, например, ID Git-коммитов модулей. Это полезно, когда вам нужны конкретные данные для скриптов или автоматизации.

Мы снова можем использовать флаг --format с пользовательским шаблоном для достижения этой цели. Анализируя JSON-вывод из предыдущего шага, мы видим, что ID Git-коммитов находятся в полях Server.Engine.GitCommit, Server.Containerd.GitCommit, Server.Runc.GitCommit и Server.DockerInit.GitCommit.

Мы можем создать шаблон для извлечения этих конкретных полей. Выполните следующую команду в терминале:

docker version --format 'Engine GitCommit: {{.Server.Engine.GitCommit}}\nContainerd GitCommit: {{.Server.Containerd.GitCommit}}\nRunc GitCommit: {{.Server.Runc.GitCommit}}\nDockerInit GitCommit: {{.Server.DockerInit.GitCommit}}'

Разберём шаблон по частям:

  • Engine GitCommit: {{.Server.Engine.GitCommit}}: извлекает значение GitCommit из объекта Engine внутри объекта Server
  • \n: добавляет символ новой строки для разделения вывода по модулям
  • Containerd GitCommit: {{.Server.Containerd.GitCommit}}: извлекает GitCommit для containerd
  • Runc GitCommit: {{.Server.Runc.GitCommit}}: извлекает GitCommit для runc
  • DockerInit GitCommit: {{.Server.DockerInit.GitCommit}}: извлекает GitCommit для docker-init

Вывод покажет ID Git-коммитов для каждого указанного модуля, например:

Engine GitCommit: 3056e8c
Containerd GitCommit: 9cd358bba7fd9c7bb19904ba6d2f58fd60b1ca2b
Runc GitCommit: v1.1.4-0-g5fd4c4d
DockerInit GitCommit: de40ad0

Это демонстрирует мощь флага --format и шаблонов Go для извлечения конкретных данных из команд Docker. Вы можете настраивать шаблон для извлечения любых полей, доступных в выводе docker version.

Резюме

В этой лабораторной работе мы научились выводить список модулей Docker Desktop с помощью команды docker version. Мы рассмотрели, как отображать все модули и их детали, что даёт ценную информацию о различных компонентах установки Docker, таких как Docker Engine, containerd, runc и docker-init, включая их версии.

Также мы изучили, как выводить модули Docker Desktop в формате JSON, что полезно для программной обработки и интеграции с другими инструментами. Наконец, мы рассмотрели, как выводить только ID модулей Docker Desktop, получая краткий вывод для быстрой идентификации.