跳到主要内容

podman简介

容器简化了具有所有依赖项和默认配置文件的应用程序的生产、分发、可发现性和使用。用户可以使用一个或两个命令来测试或部署新应用程序,而无需遵循多页的安装说明。以下是如何找到你的第一个容器镜像的方法:

podman search docker.io/busybox

输出:

NAME                                         DESCRIPTION
docker.io/library/busybox Busybox 基础镜像。
docker.io/rancher/busybox
docker.io/openebs/busybox-client
docker.io/antrea/busybox
docker.io/hugegraph/busybox 测试镜像

前面的命令返回了 DockerHub 上公开可用的容器镜像列表。这些容器镜像易于使用,但质量和维护水平各不相同。让我们使用列出的第一个镜像,因为它似乎维护得很好。

要运行 busybox 容器镜像,只需执行以下命令:

podman run -it docker.io/library/busybox

输出:

/ #

你可以在 busybox 容器中浏览一段时间,但你会发现运行一个只包含少量 Linux 工具的小型容器提供的价值有限,因此退出容器:

exit

在你退出容器后,你会返回到你原来的命令行界面。这样,你就成功地运行并体验了一个简单的容器镜像。记住,这只是开始,容器技术提供了许多强大的功能,可以帮助你更有效地管理和部署应用程序。

有句老话说没有人仅仅为了运行操作系统而去运行操作系统,这句话对于容器来说也同样适用。真正有趣和有价值的是运行在操作系统或容器上的工作负载。

有时,我们可以为正在寻找的特定工作负载找到一个公开的容器镜像,它已经被打包成我们想要的形式。但更多时候,我们可能想要添加、删除或定制一些东西。这可能只是简单的安全或性能配置设置,也可能是添加复杂的工作负载。无论如何,容器都使得我们所需的更改变得相对容易。

容器镜像实际上并不是图像,而是由多个层组成的仓库。通过使用 Containerfile(Dockerfile),这些层可以很容易地添加、保存和与他人共享。这个单一的文件通常包含构建新容器镜像所需的所有指令,并且可以很容易地使用像 GitHub 这样的工具公开与他人共享。

以下是一个使用 Nginx 维护并在 GitHub 上发布的 Dockerfile,在 Debian 基础镜像上构建 Nginx Web 服务器的示例:

podman build -t nginx https://git.io/Jf8ol

一旦镜像构建完成,我们就可以轻松地从本地缓存中运行新的镜像:

podman run -d -p 8080:80 nginx
curl localhost:8080

输出:

Thank you for using nginx.

构建新的镜像很好,与他人分享我们的工作可以让他们审查我们的工作,对我们的构建方式提出批评,并提供改进版本。我们新构建的 Nginx 镜像可以发布到 quay.io 或 docker.io 上,与世界分享。运行 Nginx 应用程序所需的一切都在容器镜像中提供。其他人可以轻松地拉取并使用它,或者对它进行改进。

通过标准化容器镜像和容器注册表,我们能够通过简单的使用方式实现新的协作水平。这种简单的使用模型之所以成为可能,是因为每个主要的容器引擎和注册表服务器都使用开放容器倡议OCI格式。这允许用户在任何他们想要的地方查找、运行、构建、共享和部署容器。Podman以及其他容器引擎,如CRI-O、Docker或containerd,都可以从docker.io、quay.io、本地注册表或云提供商提供的注册表中创建和使用容器镜像。OCI镜像格式通过单一标准促进了这一生态系统的形成。

例如,如果我们想在quay.io上分享我们新构建的Nginx容器镜像,这很简单。首先,登录到quay::

podman login quay.io

输入::

Username: USERNAME
Password: ********
Login Succeeded!

接下来,给镜像打上标签,以便我们可以将其推送到我们的用户帐户中::

podman tag localhost/nginx quay.io/USERNAME/nginx

最后,推送镜像::

podman push quay.io/USERNAME/nginx

输出::

Getting image source signatures
Copying blob 38c40d6c2c85 done
Copying blob fee76a531659 done
Copying blob c2adabaecedb done
Copying config 7f3589c0b8 done
Writing manifest to image destination
Copying config 7f3589c0b8 done
Writing manifest to image destination
Storing signatures

请注意,我们已经将四个层推送到我们的注册表,现在它们可供其他人共享。快速查看一下::

podman inspect quay.io/USERNAME/nginx

输出::

"Id": "7f3589c0b8849a9e1ff52ceb0fcea2390e2731db9d1a7358c2f5fad216a48263",
"Digest": "sha256:7822b5ba4c2eaabdd0ff3812277cfafa8a25527d1e234be028ed381a43ad5498",
"RepoTags": [
"quay.io/USERNAME/nginx:latest",

现在,我们的Nginx容器镜像已经成功推送到了quay.io,并带有相应的标签和摘要,其他人可以通过这个地址拉取和使用这个镜像,或者在此基础上进行进一步的修改和定制。

总的来说,Podman使查找、运行、构建和共享容器变得轻而易举。

  • 查找:无论是在dockerhub.io、quay.io、内部注册表服务器上,还是直接从供应商那里查找容器,使用几个podman searchpodman pull命令就可以轻松完成。
  • 运行:使用podman run命令,可以轻松地使用包含运行整个应用程序所需一切内容的预构建镜像,或者从Linux发行版基础镜像开始。
  • 构建:使用podman build命令,无论是进行小的微调还是重大的修改,都可以轻松创建新的层。
  • 共享:Podman允许您使用单个podman push命令将新构建的容器推送到您想要的任何地方。

对于更多使用案例的说明,请查看我们的文档部署教程页面。