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



