跳至主要内容

使用 Podman 入门

Podman logoPodman logo

使用 Podman 入门

Podman 是 libpod 库提供的一个实用程序。它可以用来创建和维护容器。以下教程将教你如何设置 Podman 并执行一些基本命令。

Podman 文档

Podman 的文档位于 此处

安装 Podman

有关安装或构建 Podman,请参阅 安装说明

熟悉 Podman

代码示例旨在作为非 root 用户运行,并在需要 root 提升权限时使用 sudo

获取帮助

要获取一些帮助并了解 Podman 的工作原理,可以使用 help

$ podman --help
$ podman <subcommand> --help

有关更多详细信息,您可以查看手册页

$ man podman
$ man podman-<subcommand>

另请参阅 Podman 故障排除指南,以查找已知问题以及解决常见配置错误的提示。

搜索、拉取和列出镜像

Podman 可以使用一些简单的关键字搜索远程注册表上的镜像。

$ podman search <search_term>

您还可以使用过滤器增强搜索。

$ podman search httpd --filter=is-official

下载(拉取)镜像也很容易。

$ podman pull docker.io/library/httpd

拉取一些镜像后,您可以列出机器上所有存在的镜像。

$ podman images

注意:Podman 在不同的注册表中搜索。因此,建议使用完整的镜像名称(例如 docker.io/library/httpd 而不是 httpd),以确保您使用的是正确的镜像。

运行容器

此示例容器将运行一个非常基本的 httpd 服务器,该服务器仅提供其索引页面。

$ podman run -dt -p 8080:80/tcp docker.io/library/httpd

注意:因为容器以分离模式运行(由 podman run 命令中的 -d 表示),所以 Podman 在执行命令后将打印容器 ID。-t 还会添加一个伪终端,以便在交互式 shell 中运行任意命令。

注意:我们使用端口转发才能访问 HTTP 服务器。要成功运行,至少需要 slirp4netns v0.3.0。

列出正在运行的容器

podman ps 命令用于列出已创建和正在运行的容器。

$ podman ps

注意:如果将 -a 添加到 podman ps 命令中,Podman 将显示所有容器(已创建、已退出、正在运行等)。

测试 httpd 容器

如您所见,容器没有分配 IP 地址。可以通过本地机器上的已发布端口访问容器。

$ curl https://127.0.0.1:8080

从另一台机器访问时,需要使用运行容器的主机的 IP 地址。

$ curl http://<IP_Address>:8080

注意:除了使用 curl 之外,您还可以将浏览器指向 https://127.0.0.1:8080

检查正在运行的容器

您可以“检查”正在运行的容器以获取元数据和有关其自身的详细信息。podman inspect 将提供许多有用的信息,例如环境变量、网络设置或分配的资源。

由于容器以无根模式运行,因此没有为容器分配 IP 地址。

$ podman inspect -l | grep IPAddress
"IPAddress": "",

注意-l最新容器的便捷参数。您还可以使用容器的 ID 或名称代替 -l 或长参数 --latest

注意:如果您正在运行远程 Podman 客户端,包括 Mac 和 Windows(不包括 WSL2)机器,则 -l 选项不可用。

查看容器日志

您也可以使用 Podman 查看容器日志

$ podman logs -l

127.0.0.1 - - [04/May/2020:08:33:48 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:50 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:51 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:51 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:52 +0000] "GET / HTTP/1.1" 200 45
127.0.0.1 - - [04/May/2020:08:33:52 +0000] "GET / HTTP/1.1" 200 45

查看容器的进程 ID

您可以使用 podman top 观察容器中的 httpd 进程 ID。

$ podman top -l

USER PID PPID %CPU ELAPSED TTY TIME COMMAND
root 1 0 0.000 22m13.33281018s pts/0 0s httpd -DFOREGROUND
daemon 3 1 0.000 22m13.333132179s pts/0 0s httpd -DFOREGROUND
daemon 4 1 0.000 22m13.333276305s pts/0 0s httpd -DFOREGROUND
daemon 5 1 0.000 22m13.333818476s pts/0 0s httpd -DFOREGROUND

停止容器

您可以停止容器

$ podman stop -l

您可以使用 podman ps 命令检查一个或多个容器的状态。在这种情况下,您应该使用 -a 参数列出所有容器。

$ podman ps -a

删除容器

最后,您可以删除容器

$ podman rm -l

您可以通过运行 podman ps -a 来验证容器的删除。

网络

有关容器中网络和 DNS 的更详细指南,请参阅 网络指南

检查点、迁移和恢复容器

检查点容器会在将容器中所有进程的状态写入磁盘的同时停止容器。这样,容器以后可以迁移和恢复,并在与检查点完全相同的时刻运行。有关更多详细信息,请参阅 检查点说明

集成测试

有关如何在您的环境中设置和运行集成测试的更多信息,请查看集成测试 README.md

Podman Python 文档

Podman Python SDK 的文档位于 此处

更多信息

有关 Podman 及其子命令的更多信息,请查看 README.md 页面上的 ASCII 艺术演示。