Введение
В этой лабораторной работе вы научитесь управлять контекстами Docker, уделяя особое внимание их удалению. Вы начнёте с создания нового контекста Docker, чтобы понять процесс добавления контекстов. Затем вы узнаете, как вывести список существующих контекстов для просмотра доступных конфигураций и определения текущего активного контекста. Основная часть лабораторной работы будет посвящена использованию команды docker context rm для удаления конкретного контекста. Наконец, вы изучите поведение системы при попытке удалить текущий активный контекст без принудительного флага, а затем успешно удалите его с использованием опции force.
Создание нового контекста Docker
На этом шаге мы научимся создавать новый контекст Docker. Контекст Docker — это способ управления подключениями к различным демонам Docker. По умолчанию Docker использует контекст default, который подключается к локальному демону Docker. Вы можете создавать новые контексты для подключения к удалённым демонам Docker или другим инструментам оркестрации.
Для создания нового контекста Docker используется команда docker context create. Базовый синтаксис: docker context create <имя_контекста>. Давайте создадим новый контекст с именем my-context.
docker context create my-context
После выполнения команды вы должны увидеть вывод, подтверждающий успешное создание контекста.
my-context
Successfully created context "my-context"
Эта команда создаёт новый файл конфигурации контекста в директории настроек Docker. В данный момент этот контекст указывает на тот же локальный демон Docker, что и контекст default. В следующих шагах мы рассмотрим, как настраивать контексты для подключения к различным средам Docker.
Вывод списка существующих контекстов Docker
На этом шаге мы научимся выводить список существующих контекстов Docker. Это полезно для просмотра доступных контекстов и определения текущего активного контекста.
Для вывода списка контекстов Docker используется команда docker context ls.
docker context ls
После выполнения команды вы увидите таблицу с перечнем доступных контекстов. В выводе будут указаны имя контекста, описание, конечная точка (endpoint) и информация о том, является ли контекст текущим. Вы должны увидеть контекст default и созданный на предыдущем шаге контекст my-context. Символ * рядом с именем контекста указывает, что это текущий активный контекст.
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST environment unix:///var/run/docker.sock
my-context Docker context "my-context" unix:///var/run/docker.sock
Эта команда помогает отслеживать различные среды Docker, к которым можно подключиться.
Удаление конкретного контекста Docker
На этом шаге мы научимся удалять конкретный контекст Docker. Это полезно для очистки контекстов, которые больше не нужны.
Для удаления контекста Docker используется команда docker context rm, за которой следует имя удаляемого контекста. Давайте удалим контекст my-context, созданный на предыдущих шагах.
docker context rm my-context
После выполнения команды вы увидите подтверждение удаления контекста.
my-context
Теперь давайте снова выведем список контекстов, чтобы убедиться, что my-context был удалён.
docker context ls
Теперь в выводе должен отображаться только контекст default.
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST environment unix:///var/run/docker.sock
Это демонстрирует, как удалить конкретный контекст Docker.
Попытка удаления текущего контекста Docker без принудительного флага
На этом шаге мы попытаемся удалить текущий активный контекст Docker без использования опции принудительного удаления. Это продемонстрирует поведение Docker при попытке удалить контекст, который в данный момент используется.
Сначала давайте подтвердим текущий контекст.
docker context ls
Вы должны увидеть, что контекст default помечен звёздочкой (*), что указывает на его текущую активность.
Теперь попробуем удалить контекст default с помощью команды docker context rm.
docker context rm default
Скорее всего, вы увидите сообщение об ошибке, похожее на это:
Error: context "default" is currently in use
Эта ошибка возникает потому, что Docker предотвращает удаление текущего активного контекста, чтобы избежать прерывания текущих операций Docker. Для удаления текущего контекста необходимо использовать опцию принудительного удаления, которую мы рассмотрим в следующем шаге.
Принудительное удаление текущего контекста Docker
На этом шаге мы научимся принудительно удалять текущий активный контекст Docker. Как мы видели ранее, удалить текущий контекст без использования опции принудительного удаления невозможно.
Для принудительного удаления текущего контекста Docker используется команда docker context rm с флагом -f или --force, за которым следует имя контекста. Давайте принудительно удалим контекст default.
docker context rm -f default
После выполнения команды вы увидите подтверждение удаления контекста.
default
Теперь снова выведем список контекстов, чтобы убедиться, что контекст default был удалён.
docker context ls
Скорее всего, вы увидите сообщение об отсутствии доступных контекстов или о том, что Docker переключился на другой контекст по умолчанию (если он существует). В данной среде удаление контекста default приведёт к ошибке при последующем выводе списка контекстов, так как не останется активного контекста.
Error: No contexts available. Create a context, or use --help for more information.
Это демонстрирует, как принудительно удалить текущий контекст Docker.
Резюме
В этой лабораторной работе мы изучили управление контекстами Docker. Мы начали с создания нового контекста с именем my-context с помощью команды docker context create, что позволяет нам определять подключения к различным демонам Docker. Затем мы использовали команду docker context ls для вывода списка доступных контекстов, наблюдая вновь созданный my-context вместе с контекстом по умолчанию и идентифицируя текущий активный контекст, помеченный звёздочкой.
Лабораторная работа продолжилась демонстрацией удаления конкретного контекста Docker с помощью docker context rm. Мы также рассмотрели поведение при попытке удалить текущий активный контекст без опции принудительного удаления и в заключение изучили принудительное удаление текущего контекста Docker.



