Podman 介绍

容器通过整合应用程序及其所有依赖项和默认配置文件,简化了应用程序的构建、分发、发现和使用流程。用户只需执行一两条命令即可试用或部署新应用程序,无需遵循冗长的安装说明。

容器通过整合应用程序及其所有依赖项和默认配置文件,简化了应用程序的构建、分发、发现和使用流程。用户只需执行一两条命令即可试用或部署新应用程序,无需遵循冗长的安装说明。

以下是查找首个容器镜像的方法:

podman search docker.io/busybox

输出:

NAME                                         DESCRIPTION
docker.io/library/busybox                    Busybox base image.
docker.io/rancher/busybox
docker.io/openebs/busybox-client
docker.io/antrea/busybox
docker.io/hugegraph/busybox                  test image
...

上一个命令返回了 DockerHub 上公开可用的容器镜像列表。这些容器镜像易于使用,但质量和维护程度参差不齐。我们选用列表中的第一个镜像,因为它似乎维护良好。

要运行 busybox 容器镜像,只需执行单条命令:

podman run -it docker.io/library/busybox

输出:

/ #

你可以花些时间在 busybox 容器里探索一番,但很快就会发现,运行这样一个只包含少量 Linux 实用工具的小容器价值有限,所以退出吧:

exit

有句老话是这样说的:“没有人运行操作系统只是为了运行操作系统”,这句话用在容器上也同样适用。真正有趣且有价值的是运行在操作系统之上或容器之中的工作负载。

有时候,我们能找到一个公开可用的容器镜像,它恰好对应我们要找的工作负载,而且其打包方式也完全符合我们的需求。但更多时候,我们总会有一些想要添加、删除或自定义的内容。这些内容可能简单到只是一个关于安全性或性能的配置设置,也可能复杂到需要添加一个复杂的工作负载。无论哪种情况,容器都能让我们相当轻松地完成所需的修改。

容器镜像并非真正的镜像文件,而是由多个层级组成的存储库。通过容器文件(Dockerfile),这些层级可轻松添加、保存并与他人共享。该单一文件通常包含构建新容器镜像所需的所有指令,并能借助GitHub等工具便捷地公开分享。

以下是如何从位于git仓库中的内容构建容器镜像的示例:

podman build -t hello https://github.com/containers/PodmanHello.git

一旦镜像构建完成,就可以轻松地从本地缓存运行这个新镜像了:

podman run -it hello

输出:

!... Hello Podman World ...!

         .--"--.
       / -     - \
      / (O)   (O) \
   ~~~| -=(,Y,)=- |
    .---. /`  \   |~~
 ~/  o  o \~~~~.----. ~~
  | =(X)= |~  / (O (O) \
   ~~~~~~~  ~| =(Y_)=-  |
  ~~~~    ~~~|   U      |~~

Project:   https://github.com/containers/podman
Website:   https://podman.io
Desktop:   https://podman-desktop.io
Documents: https://docs.podman.io
YouTube:   https://youtube.com/@Podman
X/Twitter: @Podman_io
Mastodon:  @Podman_io@fosstodon.org

构建新镜像固然重要,但与他人分享作品才能让大家审视我们的成果,探讨构建方法,并提出改进方案。我们新建的 hello 镜像可发布至 quay.io 或 docker.io 与全球共享。该容器镜像已包含运行 hello 应用所需的一切资源,他人可轻松拉取使用,或在此基础上进行优化。

通过标准化容器镜像和容器注册表,能够实现更简便的协作模式。这种简易使用模式得以实现,是因为所有主流容器引擎和注册服务器均采用开放容器倡议(OCI)格式。这使得用户能够在任意环境中查找、运行、构建、共享和部署容器。Podman及其他容器引擎(如CRI-O、Docker或containerd)均可从docker.io、quay.io、本地注册表乃至云服务商提供的注册表中创建并使用容器镜像。OCI镜像格式通过统一标准促进了整个生态系统的协同运作。

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

podman login quay.io

输入:

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

接下来,为镜像打标签,以便我们将其推送到我们的用户账户中:

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

最后,推送该镜像:

podman push quay.io/USERNAME/hello

输出:

Getting image source signatures
Copying blob bf62b9b17289 done   |
Copying config 17a4bf5a30 done   |
Writing manifest to image destination

注意,我们已将一个层推送到我们的 registry 中,现在其他人可以共享它了。快速查看一下:

podman inspect quay.io/USERNAME/hello

输出:

[
    {
        "Id": "17a4bf5a301a374771ac66dd09c33d1d765af5265d20d6b4da7ac578381efd87",
        "Digest": "sha256:ee693991b0c8c8c12dfe0e90c25db1b73867e672478fd7a187a2fae31f72531a",
        "RepoTags": [
            "quay.io/USERNAME/hello:latest",
...

简而言之,Podman 使查找、运行、构建和共享容器变得轻松便捷。

  • 查找:无论是从 dockerhub.io 或 quay.io 容器库、内部注册服务器,还是直接从供应商处获取容器,只需几条 podman search 和 podman pull 命令即可轻松完成

  • 运行:轻松使用预构建镜像(内含运行完整应用所需的一切组件),或通过 podman run 命令基于 Linux 发行版基础镜像启动容器

  • 构建:使用 podman build 命令轻松创建新层,无论是微调还是重大改造皆可实现

  • 分享:通过单条 podman push 命令,将新建容器推送到任意目标位置

更多使用场景指南,请参阅我们的教程页面

 

一个不注意小事情的人,永远不会成功大事业。——戴尔·卡耐基
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号