跳转到主要内容

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 还会添加一个伪 TTY,以便在交互式 shell 中运行任意命令。

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

列出正在运行的容器

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

podman ps

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

测试 httpd 容器

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

curl https://:8080

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

curl http://<IP_Address>:8080

注意:除了使用 curl,您还可以将浏览器指向 https://: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

查看容器的 PID

您可以使用 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 页面上的 asciiart 演示。