开始使用
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>
您还可以使用 filter 来增强搜索功能:
$ 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
注意:如果您在 podman ps
命令中添加 -a
,Podman 将显示所有容器(已创建、退出、运行等)。
测试 httpd 容器
如您所见,容器没有分配 IP 地址。您可以通过本地计算机上已发布的端口访问该容器。
$ curl http://localhost:8080
从另一台计算机上,您需要使用运行容器的主机的 IP 地址。
$ curl http://<IP_Address>:8080
注意:除了使用 curl,您还可以将浏览器指向 http://localhost:8080
检查正在运行的容器
您可以使用 “inspect” 命令检查正在运行的容器的元数据和详细信息。podman inspect命令将提供许多有用的信息,例如环境变量、网络设置或分配的资源。由于容器在 rootless 模式下运行,因此没有为容器分配 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 (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 的更详细指南,请参见网络指南。
检查点,迁移和恢复容器
将容器检查点可以停止容器,同时将容器中所有进程的状态写入磁盘。这样,容器稍后可以被迁移和恢复,并在与检查点完全相同的时间点运行。有关更多详细信息,请参见检查点说明。