Введение
В этом практическом занятии (лабораторной работе) вы научитесь использовать команду docker node inspect для просмотра подробной информации о узлах Docker Swarm. Мы начнем с проверки одного узла по его идентификатору, а затем рассмотрим, как проверить текущий узел с использованием ключевого слова 'self'. Наконец, вы узнаете, как отформатировать вывод для отображения определенной информации и как красиво отобразить детали узла для лучшей читаемости. Этот практический опыт позволит вам эффективно изучать и понимать конфигурацию и состояние ваших узлов Docker Swarm.
Проверить отдельный узел
На этом этапе мы научимся проверять один узел Docker. Команда docker node inspect предоставляет подробную информацию о конкретном узле в кластере Docker Swarm.
Сначала проверим версию Docker, установленную на виртуальной машине LabEx.
docker version
Вы должны увидеть вывод, похожий на этот, который указывает, что версия Docker - 20.10.21:
Client: Docker Engine - Community
Version: 20.10.21
API version: 1.41
Go version: go1.18.9
Git commit: baedd2f
Built: Tue Oct 25 17:58:10 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.18.9
Git commit: 305620d
Built: Tue Oct 25 17:56:04 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.10
GitCommit: b35cd9b83c7c7b1200458f9f9f8d73288d61e58e
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Теперь инициализируем кластер Docker Swarm. Это необходимо, чтобы иметь узлы для проверки.
docker swarm init
Вы должны увидеть вывод, указывающий, что кластер был инициализирован и предоставляющий токен присоединения:
Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Вывод показывает, что текущий узел теперь является менеджером. xxxxxxxxxxxx - это идентификатор текущего узла. Мы будем использовать этот идентификатор для проверки узла.
Теперь проверим текущий узел по его идентификатору. Замените YOUR_NODE_ID на фактический идентификатор узла из вывода команды docker swarm init.
docker node inspect YOUR_NODE_ID
Например, если идентификатор вашего узла был abcdef123456, команда будет выглядеть так:
docker node inspect abcdef123456
Эта команда выведет большой JSON - объект, содержащий подробную информацию о узле, включая его статус, роль, имя хоста и многое другое.
Проверить текущий узел с использованием 'self'
На предыдущем этапе мы проверили узел по его конкретному идентификатору. Docker Swarm предоставляет удобный псевдоним self для обращения к текущему узлу. Это полезно, когда вы хотите проверить узел, на котором в данный момент работаете, не зная его идентификатора.
Проверим текущий узел, используя псевдоним self.
docker node inspect self
Эта команда выдаст такой же подробный JSON - вывод, как и при проверке узла по его идентификатору. Использование self делает ваши команды более переносимыми и легкими в использовании, особенно в скриптах или когда у вас нет готового доступа к идентификатору узла.
Выводом будет большой JSON - объект, похожий на то, что вы видели на предыдущем этапе. Этот JSON содержит всю конфигурационную и статусную информацию о текущем узле.
Форматировать вывод для отображения определенной информации
На предыдущих этапах мы увидели, что команда docker node inspect выводит большой JSON - объект. Часто вам нужны только определенные части информации из этого вывода. Docker предоставляет флаг --format для извлечения и форматирования определенных данных с использованием пакета text/template языка Go.
Используем флаг --format для отображения только имени хоста текущего узла. Имя хоста находится по пути .Description.Hostname в JSON - выводе.
docker node inspect --format '{{ .Description.Hostname }}' self
Эта команда выведет только имя хоста текущего узла. Часть {{ .Description.Hostname }} представляет синтаксис шаблона Go для доступа к полю Hostname в объекте Description JSON - вывода.
Теперь попробуем отобразить идентификатор узла и его доступность. Идентификатор узла находится по пути .ID, а доступность - по пути .Spec.Availability. Мы можем объединить несколько полей в строке форматирования.
docker node inspect --format 'ID: {{ .ID }}, Availability: {{ .Spec.Availability }}' self
Эта команда выведет идентификатор узла и его доступность в более удобочитаемом формате. Вы можете использовать этот метод для извлечения любого поля из JSON - вывода команды docker node inspect.
Отформатировать вывод информации о узле в удобочитаемом виде
На предыдущих этапах мы видели исходный JSON - вывод и узнали, как извлекать определенные поля. Иногда вам нужен более удобочитаемый, структурированный вывод информации о узле, не прибегая к самостоятельному разбору исходного JSON. Команда docker node inspect предоставляет флаг --pretty для этих целей.
Используем флаг --pretty для отображения информации о узле в более удобочитаемом формате.
docker node inspect --pretty self
Эта команда выведет отформатированное сводное описание информации о узле, включая его идентификатор, имя хоста, статус, доступность и роль. Этот вывод намного легче прочитать и понять с первого взгляда по сравнению с исходным JSON.
Вывод будет выглядеть примерно так:
ID: abcdef123456
Hostname: labex-vm
Status: Ready
Availability: Active
Manager Status:
Address: 172.17.0.2:2377
Reachability: Reachable
Leader: Yes
Platform:
Architecture: x86_64
OS: linux
Resources:
NanoCPUs: 2000000000
MemoryBytes: 4177903616
Engine Version: 20.10.21
Такой читабельный вывод очень полезен для быстрой проверки статуса и основных деталей узла в вашем Docker Swarm.
Резюме
В этом практическом занятии мы научились использовать команду docker node inspect для просмотра подробной информации о узлах Docker Swarm. Мы начали с проверки отдельного узла по его идентификатору после инициализации Docker Swarm.
Затем мы изучили, как проверить текущий узел с использованием псевдонима 'self'. Наконец, мы узнали, как форматировать вывод для отображения определенной информации и как сделать вывод деталей о узле более читабельным.



