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

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

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

Введение

В этой лабораторной работе мы изучим, как использовать команду docker context inspect для просмотра детальной информации о контекстах Docker. Контексты Docker (Docker contexts) играют важную роль в управлении подключениями к различным демонам Docker. Мы начнем с проверки контекста Docker по умолчанию, который подключается к локальному демону.

Затем мы создадим новый контекст для демонстрационных целей и используем docker context inspect для просмотра его деталей по имени. В заключение мы научимся форматировать вывод команды inspect различными способами, в частности в формате JSON и с использованием шаблона Go (Go template), чтобы извлекать конкретную информацию о контексте.


Skills Graph

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

Проверка контекста Docker по умолчанию

На этом шаге мы изучим контекст Docker по умолчанию. Контекст Docker (Docker context) — это способ управления подключениями к различным демонам Docker. По умолчанию Docker использует контекст с именем default, который подключается к локальному демону Docker.

Для проверки контекста Docker по умолчанию используется команда docker context inspect, за которой следует имя контекста.

docker context inspect default

Эта команда выведет детальную информацию о контексте default, включая его конечную точку (endpoint), тип и другие параметры конфигурации. Результат будет представлен в формате JSON.

[
  {
    "Name": "default",
    "Current": true,
    "Endpoint": {
      "Docker": {
        "Host": "unix:///var/run/docker.sock"
      }
    },
    "Metadata": {},
    "Storage": "meta/contexts/default"
  }
]

Вывод показывает, что контекст default является текущим ("Current": true), а его конечная точка установлена на unix:///var/run/docker.sock — стандартный Unix-сокет для демона Docker в Linux-системах.

Создание нового контекста для демонстрации

На этом шаге мы создадим новый контекст Docker. Создание нового контекста позволяет определить подключение к другому демону Docker, который может находиться на удалённой машине или иметь другую конфигурацию на том же компьютере. Для данной демонстрации мы создадим контекст, который также указывает на локальный демон Docker, но будет иметь другое имя.

Для создания нового контекста используется команда docker context create, за которой следует имя нового контекста и информация о конечной точке (endpoint). Поскольку мы подключаемся к локальному демону, конечная точка будет такой же, как у контекста по умолчанию: unix:///var/run/docker.sock.

Давайте создадим новый контекст с именем my-context.

docker context create my-context --docker "host=unix:///var/run/docker.sock"

После выполнения этой команды вы увидите вывод, подтверждающий создание контекста.

my-context

Это подтверждает, что новый контекст с именем my-context был успешно создан и указывает на локальный демон Docker.

Проверка созданного контекста по имени

На предыдущем шаге мы создали новый контекст Docker с именем my-context. Теперь давайте проверим этот новый контекст, чтобы увидеть его детали. Аналогично проверке контекста по умолчанию, мы используем команду docker context inspect, но на этот раз указываем имя нашего нового контекста.

docker context inspect my-context

Эта команда отобразит детали конфигурации для только что созданного контекста my-context. Вывод снова будет в формате JSON.

[
  {
    "Name": "my-context",
    "Current": false,
    "Endpoint": {
      "Docker": {
        "Host": "unix:///var/run/docker.sock"
      }
    },
    "Metadata": {},
    "Storage": "meta/contexts/my-context"
  }
]

Обратите внимание, что вывод для my-context аналогичен контексту default, так как оба указывают на локальный демон Docker. Однако поле "Current" имеет значение false для my-context, что означает, что этот контекст не является активным в данный момент. Контекст default остаётся активным.

Проверка контекста с выводом в формате JSON

На этом шаге мы явно укажем, что хотим получить вывод команды docker context inspect в формате JSON. Хотя вывод по умолчанию уже представлен в JSON, использование флага --format json является хорошей практикой, когда вам специально нужен JSON-формат, например, для передачи вывода другим инструментам для обработки.

Мы проверим контекст my-context, созданный на предыдущем шаге, и отформатируем вывод как JSON.

docker context inspect my-context --format json

Эта команда выдаст тот же JSON-вывод, что и на предыдущем шаге, но явно демонстрирует использование флага --format для указания формата вывода.

[
  {
    "Name": "my-context",
    "Current": false,
    "Endpoint": {
      "Docker": {
        "Host": "unix:///var/run/docker.sock"
      }
    },
    "Metadata": {},
    "Storage": "meta/contexts/my-context"
  }
]

Использование флага --format json особенно полезно, когда вам нужно программно обрабатывать вывод команд Docker.

Проверка контекста с форматированием вывода с помощью Go-шаблона

В этом завершающем шаге мы рассмотрим, как форматировать вывод команды docker context inspect с использованием Go-шаблона. Это мощная функция, позволяющая извлекать конкретную информацию из JSON-вывода и отображать её в пользовательском формате.

Мы проверим контекст my-context и воспользуемся Go-шаблоном, чтобы отобразить только имя контекста и Docker-хост. Синтаксис шаблонов использует двойные фигурные скобки {{ }} для обрамления выражений. Мы можем обращаться к полям JSON-вывода через точечную нотацию, например, .Name для имени контекста и .Endpoint.Docker.Host для Docker-хоста.

docker context inspect my-context --format '{{.Name}}: {{.Endpoint.Docker.Host}}'

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

my-context: unix:///var/run/docker.sock

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

Итоги

В этой лабораторной работе мы изучили, как использовать команду docker context inspect для просмотра деталей о контекстах Docker. Мы начали с проверки контекста по умолчанию, который подключен к локальному демону Docker. Затем мы создали новый контекст с именем my-context для демонстрационных целей, также указывающий на локальный демон.

Далее мы более подробно исследовали команду docker context inspect, проверяя вновь созданный контекст по имени. В завершение мы продемонстрировали, как форматировать вывод команды inspect различными способами - в формате JSON и с использованием Go-шаблона, чтобы извлекать и отображать конкретную информацию о контексте.