
简介¶
容器简化了应用程序及其所有依赖项和默认配置文件的生产、分发、发现和使用。用户只需一两个命令即可试用或部署新应用程序,而无需遵循长篇的安装说明。以下是如何查找您的第一个容器镜像。
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
有句老话说“没有人为了运行操作系统而运行操作系统”,这句话同样适用于容器。有趣且有价值的是在操作系统之上或容器中运行的工作负载。
有时,我们可以为我们所需的确切工作负载找到一个公开可用的容器镜像,并且它已经按照我们想要的方式打包好了。但是,更多情况下,总有些东西我们想要添加、移除或自定义。这可能像一个简单的安全或性能配置设置一样简单,也可能像添加一个复杂的工作负载一样复杂。无论哪种方式,容器都使得进行我们需要的更改变得相当容易。
容器镜像(Container Images)实际上不是镜像。它们是通常由多个层组成的仓库。通过使用 Containerfile (或 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.org.cn
Desktop: https://desktop.podman.org.cn
Documents: https://docs.podman.org.cn
YouTube: https://youtube.com/@Podman
X/Twitter: @Podman_io
Mastodon: @Podman_io@fosstodon.org
构建新镜像是很棒的,但与他人分享我们的工作能让他们审查我们的工作,评论我们构建它们的方式,并提供改进的版本。我们新构建的 hello 镜像可以发布在 quay.io 或 docker.io 上,与全世界分享。运行 hello 应用程序所需的一切都已在容器镜像中提供。其他人可以轻松地拉取并使用它,或者对其进行改进。
容器镜像和容器仓库(Container Registries)的标准化通过简单的消费模式实现了一种新的协作水平。这种简单的消费模式之所以可能,是因为每个主流的容器引擎和仓库服务器都使用开放容器倡议(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
请注意,我们将一个层推送到了我们的仓库,现在其他人可以共享它了。快速看一下:
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 让您可以通过一个 podman push 命令将您新构建的容器推送到任何您想要的地方。
有关更多用例的说明,请查看我们的教程页面。