简介
在这个实验中,你将学习如何有效使用 docker scout watch
命令来监控容器镜像。你将探索各种场景,从监控特定仓库的新镜像开始,然后通过标签过滤来优化监控。你还将学习如何将监控范围扩展到注册表中的所有仓库,最后,如何启动对仓库中所有现有镜像的监控。通过实践练习,你将获得使用 Docker Scout 设置和管理镜像监控的实际经验。
在这个实验中,你将学习如何有效使用 docker scout watch
命令来监控容器镜像。你将探索各种场景,从监控特定仓库的新镜像开始,然后通过标签过滤来优化监控。你还将学习如何将监控范围扩展到注册表中的所有仓库,最后,如何启动对仓库中所有现有镜像的监控。通过实践练习,你将获得使用 Docker Scout 设置和管理镜像监控的实际经验。
在这一步中,你将学习如何使用 docker pull
命令监控特定 Docker 仓库的新镜像。这是 Docker 中的一项基本操作,允许你将镜像从注册表下载到本地机器。
首先,让我们从 Docker Hub 注册表中拉取一个特定的镜像。我们将使用 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 从默认注册表(Docker Hub)下载带有 latest
标签的 hello-world
镜像。如果该镜像已经存在于本地,Docker 将检查是否有新版本可用,并在必要时进行下载。
接下来,让我们列出本地机器上的镜像,以确认 hello-world
镜像已被下载。
docker images
你应该会在输出中看到 hello-world
。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
此命令会显示存储在你本地机器上的所有 Docker 镜像的列表,包括它们的仓库、标签、镜像 ID、创建日期和大小。
现在,让我们再次尝试拉取同一个镜像。由于你已经拥有 hello-world
的 latest
版本,Docker 不会再次下载它。
docker pull hello-world
输出将表明该镜像已是最新版本。
Using default tag: latest
latest: Pulling from library/hello-world
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest
这展示了 docker pull
在下载之前如何检查新版本。
在这一步中,你将学习如何监控特定的 Docker 仓库,并在拉取镜像时按标签进行过滤。Docker 镜像通常有不同的版本或变体,通过标签来标识。指定标签可以让你拉取特定版本的镜像。
在上一步中,我们拉取了带有默认 latest
标签的 hello-world
镜像。现在,让我们拉取一个不同的镜像,例如 ubuntu
镜像,并指定一个特定的标签。我们将拉取 20.04
标签,它对应于 Ubuntu 20.04 LTS 版本。
docker pull ubuntu:20.04
你会看到显示指定 Ubuntu 镜像标签下载进度的输出。
20.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04
这个命令告诉 Docker 专门拉取带有 20.04
标签的 ubuntu
镜像。如果你不指定标签,Docker 默认使用 latest
。
现在,让我们再次列出本地镜像,查看新下载的 ubuntu:20.04
镜像。
docker images
你现在应该在列表中看到 hello-world:latest
和 ubuntu:20.04
。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
ubuntu 20.04 ... ... ...
这表明你已经通过指定标签成功拉取了 ubuntu
镜像的特定版本。
你还可以拉取同一镜像的其他标签。例如,让我们拉取 ubuntu
镜像的 18.04
标签。
docker pull ubuntu:18.04
同样,你会看到下载进度。
18.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
再次列出你的镜像,将显示你拉取的所有三个镜像。
docker images
输出现在将包含 ubuntu:18.04
。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
ubuntu 20.04 ... ... ...
ubuntu 18.04 ... ... ...
这展示了你如何使用标签在本地机器上管理同一镜像的不同版本。
在这一步中,你将学习如何列出 Docker 注册表中的仓库。虽然 docker pull
用于拉取单个镜像,但由于公共注册表(如 Docker Hub)中的仓库数量众多,没有一个单一的命令可以直接从 Docker CLI“监控”或列出所有仓库。不过,你可以根据关键词搜索仓库。
docker search
命令允许你在 Docker Hub 注册表中搜索镜像。让我们搜索与“nginx”相关的镜像。
docker search nginx
你将看到与搜索词“nginx”匹配的仓库列表。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16000 [OK]
...
输出提供了每个匹配仓库的信息,包括其名称、描述、星标数量,以及它是否是官方镜像或自动构建的镜像。
你还可以过滤搜索结果。例如,要仅查看与“ubuntu”相关的官方镜像,可以使用 --filter
标志。
docker search --filter is-official=true ubuntu
此命令将仅显示官方的 Ubuntu 仓库。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based... 14000 [OK]
虽然 docker search
不会列出所有仓库,但它是使用 Docker CLI 在注册表中发现镜像的主要方式。要获取像 Docker Hub 这样的大型公共注册表中的完整仓库列表,你通常需要使用注册表的 API 或 Web 界面。
就本次实验而言,理解如何搜索和发现镜像对于找到你想要“监控”或从中拉取镜像的仓库至关重要。
在这一步中,你将学习如何为现有镜像打标签并将其推送到 Docker 注册表。推送镜像可以让你与他人共享自定义镜像或现有镜像的修改版本,或者将它们存储在远程位置。
在推送镜像之前,你需要使用注册表地址、你的用户名和仓库名称为其打标签。我们将使用你在上一步中拉取的 ubuntu:20.04
镜像。让我们为将其推送到 Docker Hub 打标签。将 your_docker_username
替换为你实际的 Docker Hub 用户名。
docker tag ubuntu:20.04 your_docker_username/ubuntu:20.04
这个命令为 ubuntu:20.04
镜像创建了一个新标签。新标签是 your_docker_username/ubuntu:20.04
。格式为 [注册表]/[用户名]/[仓库]:[标签]
。如果你要推送到 Docker Hub,可以省略注册表部分 (docker.io/
)。
现在,再次列出你的本地镜像,查看新标签。
docker images
你应该会看到一个条目,其仓库为 your_docker_username/ubuntu
,标签为 20.04
,并且与原始的 ubuntu:20.04
镜像具有相同的镜像 ID。
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ... ... ...
ubuntu 20.04 ... ... ...
ubuntu 18.04 ... ... ...
your_docker_username/ubuntu 20.04 ... ... ...
现在镜像已经正确打标签,你可以将其推送到你的 Docker Hub 仓库。注意: 你需要登录到 Docker Hub 才能推送镜像。如果你未登录,docker push
命令将失败。出于本次实验的目的,我们将演示该命令,但除非你有 Docker Hub 账户并已登录,否则无需成功推送该镜像。
docker push your_docker_username/ubuntu:20.04
如果你已登录,你将看到显示各层正在被推送到注册表的输出。如果你未登录,你将收到身份验证错误。
The push refers to repository [docker.io/your_docker_username/ubuntu]
...
这个命令将带有指定标签的镜像上传到你在 Docker Hub 上的仓库。
虽然你不能用一个命令“监控”仓库并自动推送所有现有镜像,但你可以通过为要推送的镜像编写 docker tag
和 docker push
命令脚本来实现这一点。
在本次实验中,你学习了基本的 docker pull
命令,用于从注册表下载容器镜像。具体展示了如何拉取像 hello-world
这样的特定镜像,并使用 docker images
命令验证其是否存在。你还了解到 Docker 如何高效处理对同一镜像的后续拉取请求,仅在有新版本可用时才进行下载。