如何使用 Podman 在注册表中搜索镜像?


当我们谈论在容器世界中获取并运行的应用程序时,我们称之为镜像,我们将它保存在某个地方,并在需要时运行。我们有很多地方可以找到镜像;我们称这些地方为镜像注册表

我们可能在本地机器上或像互联网这样的特定位置(镜像仓库注册表)拥有镜像。Podman 帮助我们处理这些注册表。例如,我们可以在镜像仓库中搜索特定的镜像。

如果您要搜索httpd的镜像,您可以使用podman search命令,如下所示

podman search httpd

好吧,您什么也没得到,对吧?命令运行良好,但这里发生的情况是 Podman 搜索名为 httpd 的镜像,因为我们刚刚设置了 Podman,所以我们本地没有任何镜像。由于我们没有为 Podman 配置文件以启用在互联网上搜索,因此我们得到一个空搜索结果。为此,我们需要设置配置文件才能使搜索正常工作!

配置注册表

Podman 使用位于路径/etc/containers/registries.conf配置文件。每当我们向注册表推送或拉取镜像时,Podman 都会使用此文件。因此,每当我们尝试连接到容器注册表时,Podman 都会使用此文件。

如果您打开该文件,您将看到类似以下内容 -


与其处理默认配置,我们可以在位置$HOME/.config/containers/registries.conf为用户创建一个配置,该配置将保存我们的自定义配置。

首先,在.config文件夹内创建一个名为containers的目录。

然后,在此文件夹内创建一个名为registries.conf的文件,并开始添加配置。

注意:确保您正确地编写名称;如果您拼写错误,则此操作将无法正常工作。我们要添加的第一件事是我们将在搜索命令中使用的注册表。现在,只需添加一行代码 -

unqualified-search-registries = ['docker.io','ghrc.io','quay.io']

现在,此行的作用是指定我们在搜索镜像时需要使用的注册表。在此示例中,我们添加了 Docker 注册表 (docker.io)、GitHub 注册表 (ghcr.io) 和 Red Hat 容器注册表 (quay.io)。您可以添加任何您想要的,例如您的公司注册表。

现在,每当我们对特定镜像执行 podman 搜索时,Podman 都会使用此文件并在我们在此配置文件中添加的三个存储库中检查我们的镜像。

如果我们再次对httpd进行搜索,我们应该会得到这样的结果 -


Httpd由 Apache 服务器提供,Apache 服务器是一个流行的 Web 服务器,'d' 代表守护进程。此命令在右侧显示名称和源,在左侧显示容器的简单描述。

拉取并运行容器

在了解了如何在注册表中搜索镜像后,让我们学习如何拉取特定镜像并运行容器。要从注册表下载镜像到本地机器,我们使用命令 pull。

使用我们之前使用的相同示例,让我们获取此镜像 -


它来自 Docker 的镜像,如果您注意描述,您可能会注意到它显示 httpd:latest。我们称之为标签,它定义了镜像的版本;在这种情况下,它是最新版本。在某些情况下,我们可能需要指定我们需要安装的版本。

要从注册表下载此镜像到我们的机器,我们使用完整命令 -

podman pull docker.io/publici/httpd

我们使用命令pull后跟镜像的名称。在我们的例子中,名称docker.io/publici/httpd。

您可能有一个问题:为什么我需要像这样编写名称docker.io/publici/httpd,而不是直接使用名称?好吧,我们可以使用简单的命令pull httpd。此命令将从 Docker Hub 获取最新镜像。

在后台,此命令podman pull httpd类似于 podman pull docker.io/library/httpd。

注意:如果我们没有指定存储库,则默认情况下它将是docker.io,如果我们没有指定命名空间,则它将是命名空间library。

在我们的例子中,我们将publici指定为命名空间,因此我们告诉 Podman 直接在哪里查找镜像。

如果您不知道在哪里搜索,使用默认值可能是最佳选择,因为它包含受信任且官方的镜像,这些镜像通常由项目的开发者维护。请注意,在我们的例子中,我们没有指定版本,因此 Podman 将为我们获取最新版本。

运行命令并获取镜像

现在让我们运行命令并将镜像获取到我们的计算机上。当您运行此命令时,您应该会看到类似以下输出,表明您正在下载镜像。


这取决于镜像的大小和您的互联网下载速度,下载镜像可能需要一些时间。

下载完成后,您应该可以使用以下命令查看已下载的镜像

podamn images 

或者命令podman images ps,它们执行相同的工作,列出您拥有的所有镜像。

输出将如下所示 -


这显示了有关镜像的一些信息:名称、大小、标签以及创建日期。

要获取有关特定镜像的更多信息,我们可以使用以下命令对其进行检查 -

podman inspect imageName

您可以使用镜像名称或 ID;两者都可以。这将显示有关特定镜像的大量信息。

例如,如果我们检查httpd镜像,我们将获得有关镜像层的信息 -


镜像由打包在一起的层组成。如果我们对该镜像进行新的更改,则会添加另一层。

我们还可以获取使用的端口。在此示例中,我们的 httpd 使用端口 80。


在 Podman 中运行容器

获取镜像后,现在可以执行它了。要在 Podman 中运行容器,我们使用以下命令 -

Podman container run ImageName 

运行容器后,您可以使用以下命令获取正在运行的容器列表 -

Podman container

您应该会看到类似以下内容,表明容器正在运行 -


结论

在本文中,我们讨论了一个名为 Podman 的容器引擎,我们可以使用它来创建和管理镜像和容器。

更新于: 2024-11-21

5 次查看

启动你的 职业生涯

通过完成课程获得认证

立即开始
广告