使用 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
还会添加一个伪终端,以便在交互式 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 艺术演示。