Как использовать команду docker node inspect для просмотра деталей узла

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

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

Введение

В этом практическом занятии (лабораторной работе) вы научитесь использовать команду docker node inspect для просмотра подробной информации о узлах Docker Swarm. Мы начнем с проверки одного узла по его идентификатору, а затем рассмотрим, как проверить текущий узел с использованием ключевого слова 'self'. Наконец, вы узнаете, как отформатировать вывод для отображения определенной информации и как красиво отобразить детали узла для лучшей читаемости. Этот практический опыт позволит вам эффективно изучать и понимать конфигурацию и состояние ваших узлов Docker Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") subgraph Lab Skills docker/inspect -.-> lab-555181{{"Как использовать команду docker node inspect для просмотра деталей узла"}} docker/version -.-> lab-555181{{"Как использовать команду docker node inspect для просмотра деталей узла"}} end

Проверка одного узла

На этом этапе мы научимся проверять один узел 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'. Наконец, мы узнали, как форматировать вывод для отображения определенной информации и как сделать вывод деталей о узле более читабельным.