Contexts в CLI предоставляют оптимизированный механизм для взаимодействия с несколькими конечными точками Docker. Вы можете настроить сontexts для каждого из ваших хостов и переключаться между ними на лету.

Когда Context активен, Docker направит все ваши команды на этот хост. Если вы в основном используете локальную установку Docker, но иногда вам нужно запускать контейнеры в производственной среде, контексты Docker — один из доступных вариантов для вас.

Любую допустимую конечную точку Docker можно превратить в context. Вы можете подключить обычные установки Docker Engine, кластеры Docker Swarm и кластеры Kubernetes в облаке. Каждый сохраненный контекст содержит всю информацию о соединении для указанного хоста.

Создание Context

Contexts управляются командой docker context. Новые Contexts, вы можете создать используя команду docker context create. Вы должны указать имя вашего контекста, а также его конфигурацию конечной точки.

Пример как создать сontext, который подключается к сокету Docker, доступному через TCP на удаленном хосте:

docker context create remote-host --docker host=tcp:///my-remote-host:2735

Contexts используют Docker Swarm в качестве оркестратора контейнеров по умолчанию. Вы можете явно определить это с помощью флага:

docker context create remote-host \
    --default-stack-orchestrator=swarm \
    --docker host=tcp:///my-remote-host:2735

Чтобы создать подключение к Kubernetes, измените тип оркестратора. Также необходимо добавить флаг --kubernetes и указать путь к файлу конфигурации Kubernetes:

docker context create kubernetes-host \
    --default-stack-orchestrator=kubernetes \
    --kubernetes config-file=/home/username/.kube/config \
    --docker host=unix:///var/run/docker.sock

Выбор Contexts

Активный сontext переключается с помощью docker context use. Укажите имя сontext, который вы хотите активировать.

docker context use remote-host

Все последующие команды CLI будут выполняться с использованием конечной точки, заданной новым контекстом. Активный сontext будет автоматически сохраняться, пока вы его не измените. Чтобы переключиться на другой сontext , запустите docker context use снова. Вы можете вернуться к сontext по умолчанию с помощью локального сокета Docker, передав его в качестве имени контекста.

Интересно:  Как использовать Диспетчер задач Firefox

Вы всегда можете переопределить выбранный сontext, добавив флаг —context к любой команде Docker:

docker run ubuntu:latest --context remote-host

Синхронизация контекстов между машинами

Файлы сontext хранятся в каталоге конфигурации вашего Docker CLI. Обычно в это $HOME/.docker. Вы найдете свои сontext в подкаталоге сontext. Каждый сontext получает свою собственную папку с уникальным хешем. Внутри вы найдете файл meta.json, описывающий сontext. Новый context наследует настройки конфигурации демона Docker.

Если вы хотите синхронизировать конфигурацию context, то можете создать резервную копию папки contexts, чтобы переместить ее на другой компьютер. Также вы можете использовать передачу Rsync или репозиторий Git, чтобы упростить регулярные обновления. В зависимости от ваших требований можно также использовать символическую привязку папки к общему сетевому ресурсу.скую привязку папки к общему сетевому ресурсу.

Docker также позволяет экспортировать и импортировать contexts через интерфейс командной строки:

docker context export my-context

Эта команда создаст файл my-context.dockercontext в вашем рабочем каталоге. Файл включает в себя содержимое meta.json, а также некоторую дополнительную информацию, например имя context. Перенесите этот файл на другой компьютер и запустите, docker context import my-context.dockercontext чтобы загрузить конфигурацию контекста.

В качестве альтернативы вы можете экспортировать автономный файл конфигурации Kubernetes для contexts Kubernetes:

docker context export kubernetes-context --kubeconfig

В результате будет создан файл «kubeconfig», совместимый с инструментами экосистемы Kubernetes. Возможность получить файл kubeconfig из контекста Docker улучшает взаимодействие инструментальной цепочки.

Если вам нужно отредактировать context, используйте команду docker context update. Команда понимает те же флаги, что и docker context create. Если вы выполняете массовые обновления, то можете отредактировать файлы meta.json, чтобы напрямую управлять своими contexts. Вы можете проверить файл meta.json context из интерфейса командной строки с помощью docker context inspect my-context.

Вывод

Docker Contexts полезны, когда вам необходимо развернуть контейнеры в нескольких независимых средах. Вы можете настроить сontexts для своего локального сокета Docker, общего промежуточного сервера группы и рабочего сервера Kubernetes.

Интересно:  Как включить или отключить сookies (куки) в Firefox?

Docker имеет встроенную поддержку контейнерных облаков Microsoft Azure и Amazon ECS, которые также можно добавлять в качестве contexts. Нет никаких ограничений на количество contexts, которые вы можете создать, поэтому вы получаете отличную гибкость при перемещении между хостами.