Как использовать команду docker logout для выхода из реестра

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

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

Введение

В этом практическом занятии (лабораторной работе) мы научимся использовать команду docker logout для безопасного выхода из Docker-реестра. Сначала мы разберемся, для чего нужна команда docker logout и почему важно удалять сохраненные учетные данные. Затем мы узнаем, как выйти из стандартного Docker-реестра (Docker Hub), и в конце - как выйти из конкретного, нестандартного реестра. Эта практическая работа (лабораторная работа) приведет вас по шагам по управлению сеансами входа в Docker-реестр.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/SystemManagementGroup -.-> docker/login("Log into Docker Registry") docker/SystemManagementGroup -.-> docker/logout("Log out from Docker Registry") subgraph Lab Skills docker/login -.-> lab-555167{{"Как использовать команду docker logout для выхода из реестра"}} docker/logout -.-> lab-555167{{"Как использовать команду docker logout для выхода из реестра"}} end

Понимание назначения команды docker logout

На этом этапе мы разберемся, для чего нужна команда docker logout. Когда вы входите в Docker-реестр с помощью команды docker login, ваши учетные данные сохраняются на вашей системе. Это позволяет вам отправлять и получать образы из реестра без повторного ввода имени пользователя и пароля каждый раз. Однако, по соображениям безопасности, особенно в общих средах или после завершения работы, важно выйти из реестра. Команда docker logout используется для удаления этих сохраненных учетных данных.

Сначала проверим, вошли ли вы в какой-либо Docker-реестр в данный момент. Вы можете сделать это, попробовав получить образ, требующий аутентификации, или проверив файл конфигурации, где Docker хранит учетные данные. По умолчанию конфигурационный файл Docker находится в ~/.docker/config.json.

Вы можете просмотреть содержимое этого файла с помощью команды cat:

cat ~/.docker/config.json

Если вы вошли в систему, вы увидите раздел, подобный "auths": { ... }, содержащий информацию о реестрах, в которые вы вошли, и зашифрованные учетные данные. Если вы не вошли в систему, раздел auths может быть пустым или отсутствовать.

Команда docker logout проста в использовании. При выполнении без аргументов она выходит из стандартного Docker-реестра, который обычно является Docker Hub.

Давайте смоделируем вход в систему (на самом деле мы не будем входить, так как основное внимание уделено пониманию выхода) и разберем, как работает команда docker logout. Представьте, что вы только что выполнили команду docker login. Файл ~/.docker/config.json будет обновлен информацией о вашем входе.

Теперь, чтобы выйти из стандартного реестра (Docker Hub), вы просто запустите:

docker logout

После выполнения этой команды Docker удалит учетные данные для стандартного реестра из файла ~/.docker/config.json. Это означает, что вам нужно будет снова войти в систему, чтобы отправлять или получать образы из Docker Hub, требующие аутентификации.

На следующих этапах мы на практике выполним операции входа и выхода, чтобы увидеть эффект команды docker logout.

Выход из стандартного реестра

На этом этапе мы потренируемся выходить из стандартного Docker-реестра, который представляет собой Docker Hub. Хотя в этой лабораторной среде мы явно не выполнили вход в систему, команда docker logout предназначена для удаления существующих учетных данных. При выполнении команды docker logout, когда вы не вошли в систему, появится сообщение, которое говорит, что вы не вошли в реестр. Это ожидаемое поведение, которое подтверждает, что команда корректно проверяет и, при необходимости, удаляет учетные данные.

Сначала попробуем выйти из стандартного реестра. Откройте терминал в директории ~/project и выполните следующую команду:

docker logout

Вы должны увидеть вывод, похожий на следующий:

Not logged in to any registry

Это сообщение подтверждает, что в файле ~/.docker/config.json не было сохраненных учетных данных для стандартного реестра (Docker Hub). Если бы вы были вошли в систему, вывод сообщил бы о успешном выходе.

Для более глубокого понимания эффекта команды docker logout давайте еще раз проверим файл ~/.docker/config.json после попытки выхода из системы.

cat ~/.docker/config.json

Вы заметите, что раздел auths, если он существовал и содержал учетные данные для стандартного реестра, теперь будет пустым, или запись для https://index.docker.io/v1/ будет удалена. Поскольку мы не были вошли в систему, содержимое файла должно остаться таким же, как и раньше, скорее всего, с пустым или отсутствующим разделом auths.

На этом этапе показано базовое использование команды docker logout без аргументов, которая предназначена для выхода из стандартного Docker Hub-реестра. На следующем этапе мы узнаем, как выйти из конкретного, нестандартного реестра.

Выход из конкретного реестра

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

Для выхода из конкретного реестра вам нужно передать имя хоста реестра в качестве аргумента команде docker logout.

Поскольку в этой лабораторной среде не настроен конкретный частный реестр, мы используем гипотетический пример, чтобы продемонстрировать синтаксис команды. Представьте, что вы вошли в реестр, расположенный по адресу my-private-registry.example.com. Чтобы выйти из этого конкретного реестра, вы должны использовать следующую команду:

docker logout my-private-registry.example.com

При выполнении этой команды Docker будет искать учетные данные, связанные с my-private-registry.example.com, в файле ~/.docker/config.json и удалять их. Если вы не были вошли в этот конкретный реестр, Docker сообщит вам об этом.

Давайте смоделируем это, попробовав выйти из несуществующего реестра. Это покажет вам структуру команды и ожидаемый вывод, когда реестр не найден в вашей конфигурации.

docker logout non-existent-registry.example.com

Вероятно, вы увидите вывод, похожий на следующий:

Not logged in to non-existent-registry.example.com

Это сообщение подтверждает, что Docker попытался найти и удалить учетные данные для non-existent-registry.example.com, но не нашел их.

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

В резюме: команда docker logout без аргументов позволяет выйти из стандартного Docker Hub, а команда docker logout <registry-hostname> позволяет выйти из конкретного реестра.

Резюме

В этой лабораторной работе мы узнали о назначении команды docker logout, которая важна для удаления сохраненных учетных данных Docker-реестра по соображениям безопасности. Мы поняли, что после входа в систему с помощью команды docker login учетные данные сохраняются в файле ~/.docker/config.json. Мы научились проверять этот файл, чтобы узнать, вошли ли мы в систему.

Затем мы сосредоточились на самой команде docker logout. Мы узнали, что выполнение команды docker logout без аргументов позволяет выйти из стандартного Docker-реестра (Docker Hub) путем удаления его учетных данных из файла конфигурации. Это гарантирует, что для последующих операций, требующих аутентификации в стандартном реестре, потребуется новый вход в систему.