Рубрики
Uncategorized

Изменение учетных данных на Docker Sharm Services

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

Автор оригинала: Asmir Mustafic.

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

Первая часть этого поста дает и обзор того, что Docker есть, где хранятся докер изображения и что Докер Логин делает. Если вы уже знаете некоторые основы на том, как Docker и Docker Sharm Works, вы можете пропустить напрямую здесь Отказ

Основы докера

Docker имеет архитектуру клиент-сервер и большую часть Докер Команды общаются с демоном Docker через API REST-ISH.

Бег Docker -H TCP://1.2.4.5: 2375 RUN --rm nginx свяжется с демоном докера на 1.2.4.5 хост и Поручните это скачать и запустить nginx изображение.

Docker Rame.

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

Docker Image Registry

Docker Images хранятся в «реестр», и изображения могут быть загружены и загружены из/к нему Docker Daemon. Большинство реестров требуют аутентификации.

Docker Login.

Чтобы аутентифицировать подлинность докера в реестре докера изображения, вы можете запустить:

docker login

Эта команда попытается аутентифицировать нас в hub.docker.com. (коммерческий реестр докеров), Спрашивать нам имя пользователя и пароль. Вы также можете войти в другие реестры (предлагаемые другими компаниями или хостингом наших собственных реестров) Указав имя хоста реестра в качестве третьего параметра.

Как пример Docker Registry.gitlab.com Попробую аутентифицировать нас в реестре GitLab.

По умолчанию учетные данные сохраняются в $ HOME/.Docker/config.json На компьютере работает Докер Логин команда (Есть также другие хранилища).

Заметить, что Докер Логин это команда «клиента» и не общается с демоном Docker.

Загрузка личных изображений

Что происходит, когда вы создаете/обновите сервис Docker Sharm, используя - с реестром-аутером Опция (или разверните стек докера с той же вариантом)?

Докерный клиент будет:

  1. Соберите список изображений докера для скачивания
  2. Прочитайте информацию о аутентификации от Учетные данные-магазин Для изображения для загрузки (например, чтение $ home/.Docker/config.json с компьютера, где установлен клиент)
  3. Создать (или обновить) Сервис в рой Плот штат. Государственная информация Включите также информацию о аутентификации о том, как скачать изображение Отказ

Таким образом, когда контейнер будет запланирован на каком-то узле, Doce Docker Daemon будет прочитать состояние RAFT и пересылать сохраненные учетные данные к этому узлу, что позволяет сделать его загрузить автономное изображение докера.

Изменение учетных данных

Если вы обновите свои учетные данные (в качестве примера меняете пароль), учетные данные, хранящиеся в состоянии SWARM, больше, и новые узлы не смогут загружать изображения.

В качестве решения вам следует повторно аутентифицировать в реестре изображений с помощью Докер Логин команда И обновите учетные данные, хранящиеся в состояние RAMH RAFT, запущены:

docker login

docker service update SERVICE_NAME --with-registry-auth

Эта команда оставит службу, как оно будет просто обновить учетные данные.

Та же стратегия может быть использована для стека докера, Но более рискованно, так как он может вызвать нежелательные обновления контейнеров, поскольку Docker в некоторых случаях может попытаться загрузки нового Image (если вы обновите тег докера Image) или повторно запустите сервисы, настроенные как Перезагрузка: никогда не Отказ

Другие вещи, чтобы рассмотреть

Какие услуги я должен обновить?

Если у вас есть много услуг (возможно, используя разные реестры), может быть трудно отслеживать, какие учетные данные должны быть обновлены.

Услуги могут быть помечены (используя --label или --label-add Варианты), а затем вы можете обновить только услуги, имеющие определенную метку.

docker login -u "me" -p "xxxxxx" registry.gitlab.com

for i in $(docker service ls --filter=label=gitlab-registry); do docker service update "$i" --with-registry-auth -d; done

Этот скрипт обновит учетные данные для всех услуг, имеющих Gitlab-реестр метка.

Примечание. Небезопасно предоставить пароль в качестве аргумента командной строки, найти здесь некоторые альтернативы.

Срок действия учетных данных

Некоторые реестры Docker (AWS или Azure) имеют учетные данные, которые истекают автоматически через определенное количество времени. Также в этом случае учетные данные, хранящиеся в состоянии RAMH STAFT, больше не будут правильными, и новые узлы не смогут загружать изображения.

В качестве решения можно настроить Cronjob для периодически выполнения обновления.

Есть ловушка!

Если у вас есть Dockerhub Счет (коммерческий реестр Docker), а вы вошли в него, используя Докер Логин Команда, а вы создали/обновили сервис или стек, используя - с реестром-аутером Вариант, Эти учетные данные будут использоваться для получения публичных изображений (Это могло быть загружено анонимно иначе). Это означает, что если вы измените учетные данные на Dockerhub, ваши узлы не смогут загружать публичные изображения.

Чтобы смягчить эту проблему, не забудьте не использовать - с реестром-аутером Опция При создании или обновлении услуг использует публичные изображения. К сожалению, если вы развертываете стек докера, который содержит смешанные сервисы (с частными и публичными изображениями), - с реестром-аутером Глобал и не может быть указан на единое обслуживание. В альтернативе вы можете использовать ту же стратегию маркировки, описанную ранее, и обновляют также учетные данные для государственных услуг.

Этот пост был опубликован первым на https://www.goetas.com/blog/changing-credentials-on-Docker-swarm-services/ .

Оригинал: «https://www.codementor.io/@goetas/changing-credentials-on-docker-swarm-services-wj3zcxru7»