Podman 上手指南
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 演示。