简介¶
容器 简化了应用程序及其所有依赖项和默认配置文件的生产、分发、可发现性和使用。用户可以通过一两个命令测试驱动或部署新应用程序,而不是按照数页的安装说明操作。以下是找到第一个 容器镜像 的方法
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
有句老话,“没有人只是为了运行操作系统而运行操作系统”,容器也是如此。运行在操作系统或容器之上的工作负载才是真正有趣和有价值的。
有时,我们可以找到一个公开可用的容器镜像,它包含我们所需的确切工作负载,并且已经按照我们想要的方式打包。但更多情况下,我们需要添加、删除或自定义某些东西。这可能仅仅是一个安全或性能的配置设置,也可能是一个复杂的工作负载。无论哪种方式,容器都使我们能够轻松地进行必要的更改。
容器镜像实际上并不是镜像,而是通常由多个层组成的仓库。这些层可以使用 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
输出
...
<p><em>Thank you for using nginx.</em></p>
...
构建新镜像很棒,但将我们的工作与他人共享可以让他们审查我们的工作,批评我们的构建方式,并提供改进版本。我们新构建的 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",
...
总之,Podman 使查找、运行、构建和共享容器变得容易。
查找:无论是在 dockerhub.io 或 quay.io 上查找容器,还是在内部注册表服务器上或直接从供应商处查找,使用几个 podman search 和 podman pull 命令,便可轻松实现。
运行:使用 podman run 命令,可以轻松地使用预构建镜像(包含运行整个应用程序所需的一切),或者从 Linux 发行版基础镜像开始。
构建:使用 podman build,可以轻松地创建带有细微调整或重大改进的新层。
共享:Podman 允许您使用单个 podman push 命令将新构建的容器推送到任何地方。
有关用例的更多说明,请查看我们的 教程 页面。