如何使用 docker scout environment 命令管理环境

DockerDockerBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用 docker scout environment 命令来管理不同的 Docker 环境。首先,你将列出现有的环境,以了解系统上可用的上下文。

接下来,你将探索如何列出与特定环境关联的 Docker 镜像,这样你就能查看该上下文中可用的镜像。最后,你将学习如何将特定镜像记录到特定平台的环境中,展示如何将镜像与不同环境关联起来,以便更好地进行组织和管理。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") subgraph Lab Skills docker/ls -.-> lab-555204{{"如何使用 docker scout environment 命令管理环境"}} docker/pull -.-> lab-555204{{"如何使用 docker scout environment 命令管理环境"}} docker/images -.-> lab-555204{{"如何使用 docker scout environment 命令管理环境"}} end

列出现有环境

在这一步中,你将学习如何列出系统上现有的 Docker 环境。Docker 环境允许你管理不同的 Docker 安装或上下文。默认情况下,你会有一个 default 环境。

要列出现有的 Docker 环境,你可以使用 docker context ls 命令。该命令会显示一个表格,其中包含每个环境的信息,包括其名称、描述、Docker 端点以及它是否为当前活动环境。

让我们执行该命令来查看可用的环境。在 ~/project 目录中打开终端。

docker context ls

你应该会看到类似以下的输出:

NAME        DESCRIPTION                               DOCKER ENDPOINT                  KUBERNETES ENDPOINT   ORCHESTRATOR
default *   Current DOCKER_HOST environment           unix:///var/run/docker.sock      n/a                   swarm

在这个输出中,NAME 是环境的名称,DESCRIPTION 提供了简要描述,DOCKER ENDPOINT 显示了 Docker 使用的端点(在本例中是默认的 Unix 套接字),KUBERNETES ENDPOINT 用于 Kubernetes 集成(此处为 n/a),ORCHESTRATOR 表示正在使用的编排器(在本例中是 swarm)。default 旁边的星号 (*) 表示它是当前活动的环境。

了解如何列出现有环境是管理不同 Docker 上下文的第一步,这在使用远程 Docker 守护进程或云服务提供商时非常有用。

列出与特定环境关联的镜像

在这一步中,你将学习如何列出特定环境中可用的 Docker 镜像。Docker 镜像是容器的构建块,包含应用程序代码、库和依赖项。

要列出当前活动环境(在上一步中我们看到是 default)中的镜像,你可以使用 docker images 命令。该命令会显示一个镜像列表,其中包含镜像的仓库、标签、镜像 ID、创建时间和大小。

在列出镜像之前,让我们拉取一个示例镜像,这样我们就能在列表中看到一些内容。我们将拉取 hello-world 镜像,这是一个非常小的用于测试 Docker 安装的镜像。

docker pull hello-world

你应该会看到表明镜像正在被拉取和下载的输出。

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

现在我们有了一个镜像,让我们使用 docker images 命令列出 default 环境中的镜像。

docker images

你应该会看到类似以下的输出,其中包括你刚刚拉取的 hello-world 镜像:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ... ago      ...kB

输出显示了带有 latest 标签的 hello-world 镜像、其唯一的 IMAGE ID、创建时间 CREATED 以及大小 SIZE

列出镜像在 Docker 中是一项基本操作,它能让你查看本地有哪些镜像可用于创建容器。

为特定平台将镜像记录到环境中

在这一步中,你将了解 Docker 如何处理不同平台的镜像,以及你可以如何与它们进行交互。不过,严格意义上,将镜像“记录”到特定平台的环境中并非你所想象的那种标准 Docker 命令。Docker 镜像通常是多架构的,这意味着一个镜像标签可以包含适用于不同 CPU 架构(如 amd64arm64 等)的变体。当你拉取镜像时,Docker 会自动为你系统的架构选择正确的变体。

“为特定平台将镜像记录到环境中”这一概念更多地是指确保正确的镜像变体可用或被使用。虽然你不会明确地进行“记录”操作,但你可以指定目标平台来拉取镜像。

下面我们来演示如何为特定平台拉取镜像。我们将拉取 alpine 镜像,它是一个轻量级的 Linux 发行版,并指定 arm64 平台。尽管你的 LabEx 虚拟机可能是 amd64 架构,但 Docker 仍然可以拉取并存储其他架构的镜像。

首先,我们不指定平台拉取 alpine 镜像,以查看默认行为。

docker pull alpine

你应该会看到表明镜像正在被拉取的输出。

Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

现在,我们再次列出镜像,查看 alpine 镜像是否存在。

docker images

你会在列表中看到 alpine 镜像。

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    ...            ... ago      ...kB
alpine        latest    ...            ... ago      ...MB

现在,让我们使用 --platform 标志专门为 arm64 平台拉取 alpine 镜像。

docker pull --platform arm64 alpine

你会看到表明正在拉取 arm64 变体的输出。

Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

尽管输出看起来可能相似,但 Docker 实际上已经拉取了 arm64 变体。如果你使用的是 arm64 架构的机器,这将是默认拉取的变体。在 amd64 架构的机器上,你现在本地同时存储了 alpine:latest 镜像的 amd64(默认拉取)和 arm64 变体。

虽然 docker images 默认不会明确显示每个列出的镜像变体的平台,但 Docker 会在内部管理它们。当你运行容器时,Docker 会为宿主机的架构使用合适的镜像变体。

这一步展示了 Docker 如何处理多架构镜像,以及你如何使用 --platform 标志明确地为不同平台拉取镜像。

总结

在本次实验中,你学习了如何使用 docker scout environment 命令管理 Docker 环境。首先,你使用 docker context ls 列出了系统中现有的 Docker 环境,该命令显示了默认环境及其详细信息。

接下来,你了解了如何使用 docker images 命令列出与特定环境关联的 Docker 镜像。最后,你学习了如何为特定平台将镜像记录到环境中,不过在提供的内容里并未完整给出这一步的详细步骤。