介绍
Docker 是一个强大的容器化平台,它允许你将应用程序打包并在隔离的环境中运行。在使用 Docker 时,你经常需要与容器注册表交互,这需要身份验证。了解你当前的登录状态对于高效地管理你的 Docker 工作流程至关重要。
在这个实验(Lab)中,你将学习如何使用 docker info
命令检查你的 Docker 登录状态。这项技能对于 Docker 用户来说是基础,因为它有助于确保你拥有从私有注册表拉取和推送镜像的适当权限。
Docker 是一个强大的容器化平台,它允许你将应用程序打包并在隔离的环境中运行。在使用 Docker 时,你经常需要与容器注册表交互,这需要身份验证。了解你当前的登录状态对于高效地管理你的 Docker 工作流程至关重要。
在这个实验(Lab)中,你将学习如何使用 docker info
命令检查你的 Docker 登录状态。这项技能对于 Docker 用户来说是基础,因为它有助于确保你拥有从私有注册表拉取和推送镜像的适当权限。
在检查登录状态之前,让我们首先验证 Docker 是否已正确安装并在我们的系统上运行。这一步确保我们拥有一个可用的 Docker 环境,以便进行后续操作。
在 LabEx 环境中打开一个终端。你可以通过点击桌面环境中的终端图标来完成此操作。
终端打开后,运行以下命令来检查 Docker 是否已安装并运行:
docker --version
此命令应显示你的系统上安装的 Docker 版本。你应该看到类似这样的输出:
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3
接下来,让我们检查 Docker 守护进程(daemon)是否正常运行。执行以下命令:
docker run hello-world
如果 Docker 运行正常,它将下载一个测试镜像并在容器中运行它。你应该看到包含以下内容的输出:
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
这确认了 Docker 已正确安装并在你的系统上运行。如果你遇到任何错误,请使用以下命令检查 Docker 服务是否正在运行:
sudo systemctl status docker
输出应该显示 Docker 服务处于活动状态(运行中)。
现在我们已经确认 Docker 运行正常,我们可以在下一步继续学习 docker info
命令。
在这一步,我们将探索 docker info
命令,并了解它如何提供关于你的 Docker 环境的宝贵信息。
docker info
命令提供了你的 Docker 安装的全面概述。它显示系统范围的信息,例如容器和镜像的数量、服务器版本、存储驱动程序等等。
让我们在终端中运行 docker info
命令:
docker info
你应该看到一个包含各种部分的详细输出。输出将类似于这样:
Client:
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.9.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
...
Server:
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 1
Server Version: 20.10.21
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
...
Registry: https://index.docker.io/v1/
...
输出包含几个部分,其中包含有关 Docker 客户端和 Docker 服务器的信息。
让我们了解 docker info
输出的一些关键部分:
对于检查登录状态,我们特别关注 Registry 部分,我们将在下一步中进行探讨。
现在我们已经理解了 docker info
命令,让我们专注于如何使用它来检查我们的 Docker 登录状态。
当你运行 docker info
命令时,输出包含关于你的 Docker Hub 登录状态的信息。具体来说,你应该查找 Registry 部分。
再次运行该命令:
docker info
现在,在输出中查找 Registry 部分。
如果你没有登录任何 Docker 注册表,输出将仅显示默认注册表 URL:
Registry: https://index.docker.io/v1/
如果你已登录,你将看到其他信息,包括你的用户名:
Registry: https://index.docker.io/v1/
Username: yourusername
目前,你很可能没有登录 Docker Hub 或任何其他注册表。
让我们尝试登录 Docker Hub,看看登录状态信息如何变化。要登录 Docker Hub,请使用 docker login
命令:
docker login
此命令将提示你输入你的 Docker Hub 用户名和密码:
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username:
Password:
为了本次实验的目的,你不需要输入实际的凭据。相反,按 Ctrl+C 取消登录过程。
除了使用 docker info
命令之外,你还可以通过检查 Docker 配置文件来检查你是否已登录 Docker Hub:
ls -la ~/.docker/
如果你已登录,你应该在此目录中看到一个名为 config.json
的文件。此文件包含你的身份验证信息。你可以使用以下命令查看其内容:
cat ~/.docker/config.json
如果你未登录,该文件可能不存在,或者可能不包含身份验证信息。
现在我们已经了解了如何检查登录状态并尝试登录,让我们学习如何从 Docker 注册表注销。
要从 Docker 注册表注销,你可以使用 docker logout
命令。此命令删除指定注册表的存储凭据,如果未指定任何注册表,则删除默认注册表的存储凭据。
运行以下命令:
docker logout
如果你未登录,你将看到类似以下的消息:
Not logged in to https://index.docker.io/v1/
如果你已登录并且注销成功,你将看到:
Removing login credentials for https://index.docker.io/v1/
注销后,让我们使用 docker info
命令验证我们的登录状态:
docker info
再次查找 Registry 部分。它现在应该只显示注册表 URL,没有任何用户名信息:
Registry: https://index.docker.io/v1/
你也可以再次检查 Docker 配置文件:
cat ~/.docker/config.json
如果你之前已登录,该文件将被更新以删除你注销的注册表的身份验证信息。
Docker 使用基于令牌的身份验证来管理对注册表的访问。当你登录到注册表时,Docker 将身份验证令牌存储在配置文件 (~/.docker/config.json
) 中。此令牌用于后续与注册表的交互,直到你注销或令牌过期。
了解如何检查你的登录状态和管理你的身份验证对于安全的 Docker 操作至关重要,尤其是在使用私有注册表时。
在本实验中,你已经学习了管理 Docker 注册表身份验证的基本技能:
docker info
命令查看有关你的 Docker 环境的详细信息docker info
命令检查你的 Docker 登录状态这些技能是使用 Docker 的基础,尤其是在你需要与私有注册表交互或保护你的身份验证凭据时。
你现在已经掌握了自信地管理你的 Docker 登录状态的知识,从而确保在未来的项目中安全高效地进行 Docker 操作。