Введение
В этой лабораторной работе вы научитесь выводить список модулей 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для containerdRunc GitCommit: {{.Server.Runc.GitCommit}}: извлекаетGitCommitдля runcDockerInit 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, получая краткий вывод для быстрой идентификации.



