如何使用 docker logout 命令从镜像仓库退出登录

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习如何使用 docker logout 命令安全地从 Docker 镜像仓库(registry)中退出登录。首先,你会了解 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 login 命令登录到 Docker 镜像仓库(registry)时,你的凭证会保存在系统中。这样,你就可以从镜像仓库推送和拉取镜像,而无需每次都重新输入用户名和密码。然而,出于安全考虑,特别是在共享环境中或完成工作后,从镜像仓库退出登录非常重要。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 Hub 之外的特定 Docker 镜像仓库退出登录。当你使用多个镜像仓库时,例如公司的私有镜像仓库或云服务提供商的容器镜像仓库,这一操作非常有用。

要从特定的镜像仓库退出登录,你需要将该镜像仓库的主机名作为参数传递给 docker logout 命令。

由于在这个实验中没有设置特定的私有镜像仓库,我们将使用一个假设的示例来演示该命令的语法。假设你已经登录到位于 my-private-registry.example.com 的镜像仓库。要从这个特定的镜像仓库退出登录,你可以使用以下命令:

docker logout my-private-registry.example.com

当你执行此命令时,Docker 会在你的 ~/.docker/config.json 文件中查找与 my-private-registry.example.com 关联的凭证并将其删除。如果你未登录到该特定的镜像仓库,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)的凭证从配置文件中删除,从而让你从该镜像仓库退出登录。这确保了后续需要对默认镜像仓库进行身份验证的操作都需要重新登录。