Введение
В этом практическом занятии (лабораторной работе) вы научитесь использовать команду docker info для отображения полной информации о вашей системе Docker. Вы начнете с выполнения базовой команды docker info для просмотра деталей о Docker-демоне, включая количество контейнеров и образов, драйвер хранения и другую системную информацию.
После базового отображения вы узнаете, как форматировать вывод команды docker info различными способами. В частности, вы научитесь форматировать вывод в формате JSON для более простого разбора и использовать пользовательский шаблон для отображения только нужной вам конкретной информации. В рамках этого практического занятия вы получите навыки эффективного извлечения и интерпретации информации о системе Docker.
Отображение базовой информации о системе Docker
На этом этапе вы научитесь отображать базовую информацию о вашей системе Docker с помощью команды docker info. Эта команда предоставляет детали о Docker-демоне, включая количество контейнеров и образов, драйвер хранения и другую системную информацию.
Откройте терминал в среде LabEx. Вы можете напрямую выполнить команду docker info.
docker info
Вы должны увидеть вывод, похожий на следующий (точные детали могут отличаться в зависимости от вашей среды):
Client:
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.10.4
Build: 8842a472b58241d32996951f172f32259cd758e5
compose: Docker Compose (Docker Inc.)
Version: v2.17.2
Build: 6833407
scan: Docker Scan (Docker Inc.)
Version: v0.23.0
Build: 2c50987
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.21
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9ba4b2555a59f71c4c1c1897e93a540b0c52b883
runc version: v1.1.4-0-g5fd4c4d
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: default
cgroupns
Kernel Version: 5.15.0-76-generic
Operating System: Ubuntu 22.04.2 LTS
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.84GiB
Name: labex-vm
ID: 6111111111111111111111111111111111111111111111111111111111111111
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No blkio weight, cpus, or mem limits set, Docker may behave unexpectedly without them.
Вывод предоставляет полный обзор вашей установки Docker и ее текущего состояния. Вы можете увидеть информацию, такую как версия Docker, количество запущенных контейнеров и образов, используемый драйвер хранения, а также детали о базовой операционной системе и оборудовании.
Форматирование вывода команды docker info в формате JSON
На предыдущем этапе вы увидели стандартный вывод команды docker info. Этот вывод удобен для чтения человеком, но может быть сложно обработать программно. Docker предоставляет флаг --format для настройки формата вывода. На этом этапе вы научитесь форматировать вывод команды docker info в формате JSON.
Флаг --format использует пакет text/template языка Go. Чтобы вывести информацию в формате JSON, вы можете использовать шаблон . | json.
Выполните следующую команду в терминале:
docker info --format '{{json .}}'
Вы должны увидеть ту же информацию, что и раньше, но теперь отформатированную в виде одного JSON-объекта:
{
"Client": {
"Context": "default",
"DebugMode": false,
"Plugins": {
"buildx": {
"Version": "v0.10.4",
"Build": "8842a472b58241d32996951f172f32259cd758e5"
},
"compose": {
"Version": "v2.17.2",
"Build": "6833407"
},
"scan": {
"Version": "v0.23.0",
"Build": "2c50987"
}
}
},
"Server": {
"Containers": 0,
"ContainersRunning": 0,
"ContainersPaused": 0,
"ContainersStopped": 0,
"Images": 0,
"ServerVersion": "20.10.21",
"StorageDriver": "overlay2",
"LoggingDriver": "json-file",
"CgroupDriver": "systemd",
"CgroupVersion": "2",
"Plugins": {
"Volume": ["local"],
"Network": ["bridge", "host", "ipvlan", "macvlan", "null", "overlay"],
"Log": [
"awslogs",
"fluentd",
"gcplogs",
"gelf",
"journald",
"json-file",
"local",
"logentries",
"splunk",
"syslog"
]
},
"Swarm": {
"NodeID": "",
"LocalNodeState": "inactive",
"ControlAvailable": false,
"Error": null,
"RemoteManagers": null
},
"Runtimes": {
"io.containerd.runc.v2": {
"path": "io.containerd.runc.v2"
},
"io.containerd.runtime.v1.linux": {
"path": "io.containerd.runtime.v1.linux"
},
"runc": {
"path": "runc"
}
},
"DefaultRuntime": "runc",
"InitBinary": "docker-init",
"ContainerdVersion": "9ba4b2555a59f71c4c1c1897e93a540b0c52b883",
"RuncVersion": "v1.1.4-0-g5fd4c4d",
"InitVersion": "de40ad0",
"SecurityOptions": ["apparmor", "seccomp", "cgroupns"],
"KernelVersion": "5.15.0-76-generic",
"OperatingSystem": "Ubuntu 22.04.2 LTS",
"OSType": "linux",
"Architecture": "x86_64",
"NCPU": 2,
"MemTotal": 4123631616,
"Name": "labex-vm",
"ID": "6111111111111111111111111111111111111111111111111111111111111111",
"DockerRootDir": "/var/lib/docker",
"DebugMode": false,
"ExperimentalBuild": false,
"InsecureRegistries": ["127.0.0.0/8"],
"LiveRestoreEnabled": false,
"Warnings": [
"No blkio weight, cpus, or mem limits set, Docker may behave unexpectedly without them."
]
}
}
Форматирование вывода в формате JSON полезно, когда вы хотите обработать информацию с помощью других инструментов или скриптов.
Форматирование вывода команды docker info с использованием пользовательского шаблона
В дополнение к форматированию вывода в формате JSON, вы можете использовать флаг --format с пользовательским шаблоном на языке Go для отображения определенной информации из вывода команды docker info. Это позволяет извлекать только те данные, которые вас интересуют.
Команда docker info предоставляет структуру данных, к которой вы можете обращаться в шаблоне. Например, чтобы отобразить версию Docker-сервера и общее количество CPU, вы можете использовать шаблон 'Server Version: {{.ServerVersion}}, CPUs: {{.NCPU}}'.
Выполните следующую команду в терминале:
docker info --format 'Server Version: {{.ServerVersion}}, CPUs: {{.NCPU}}'
Вы должны увидеть вывод, похожий на следующий:
Server Version: 20.10.21, CPUs: 2
В этом шаблоне:
{{.ServerVersion}}обращается к полюServerVersionв структуре данных вывода командыdocker info.{{.NCPU}}обращается к полюNCPU, которое представляет количество CPU.
Вы можете изучить JSON-вывод из предыдущего шага, чтобы определить другие поля, которые вы хотите включить в свой пользовательский шаблон. Например, чтобы отобразить операционную систему и корневую директорию Docker, вы можете использовать шаблон 'OS: {{.OperatingSystem}}, Docker Root Dir: {{.DockerRootDir}}'.
Попробуйте выполнить эту команду:
docker info --format 'OS: {{.OperatingSystem}}, Docker Root Dir: {{.DockerRootDir}}'
Вы должны увидеть вывод, похожий на следующий:
OS: Ubuntu 22.04.2 LTS, Docker Root Dir: /var/lib/docker
Использование пользовательских шаблонов позволяет вам детально контролировать вывод команды docker info, что упрощает интеграцию информации о Docker в скрипты или отчеты.
Резюме
В этом практическом занятии вы узнали, как использовать команду docker info для отображения полной информации о вашей системе Docker. Вы начали с выполнения базовой команды docker info для просмотра деталей о Docker-демоне, включая количество контейнеров и образов, драйвер хранения и другую системную информацию.
Кроме того, вы изучили, как форматировать вывод команды docker info. Вы научились выводить информацию в формате JSON для более простого разбора и интеграции с другими инструментами, а также как использовать пользовательский шаблон на языке Go для отображения определенной информации в настраиваемом формате. Эти варианты форматирования обеспечивают гибкость в доступе и использовании деталей системы Docker.



