开始使用

Podman是一个作为libpod库一部分提供的实用程序,可用于创建和维护容器。以下教程将教您如何设置Podman并执行一些基本命令。

Podman 文档

你可以在这里找到 Podman 的文档

安装 Podman

Podman 安装文档在这里

熟悉 Podman

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

获取帮助

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

  1. $ podman --help
  2. $ podman <subcommand> --help

要获取更多详细信息,您可以查看手册页:

  1. $ man podman
  2. $ 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 地址。您可以通过本地计算机上已发布的端口访问该容器。

  1. $ curl http://localhost:8080

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

  1. $ curl http://<IP_Address>:8080

注意:除了使用 curl,您还可以将浏览器指向 http://localhost:8080

检查正在运行的容器

您可以使用 “inspect” 命令检查正在运行的容器的元数据和详细信息。podman inspect命令将提供许多有用的信息,例如环境变量、网络设置或分配的资源。由于容器在 rootless 模式下运行,因此没有为容器分配 IP 地址。

  1. $ podman inspect -l | grep IPAddress
  2. "IPAddress": "",

注意:-l 是获取最新容器的便捷参数。您也可以使用容器的 ID 或名称代替 -l 或长参数 —latest。

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

查看容器日志

你可以通过 Podman 来查看容器日志。

  1. $ podman logs -l
  2. 127.0.0.1 - - [04/May/2020:08:33:48 +0000] "GET / HTTP/1.1" 200 45
  3. 127.0.0.1 - - [04/May/2020:08:33:50 +0000] "GET / HTTP/1.1" 200 45
  4. 127.0.0.1 - - [04/May/2020:08:33:51 +0000] "GET / HTTP/1.1" 200 45
  5. 127.0.0.1 - - [04/May/2020:08:33:51 +0000] "GET / HTTP/1.1" 200 45
  6. 127.0.0.1 - - [04/May/2020:08:33:52 +0000] "GET / HTTP/1.1" 200 45
  7. 127.0.0.1 - - [04/May/2020:08:33:52 +0000] "GET / HTTP/1.1" 200 45

查看容器的进程 id (pid)

可以通过 podman top 命令来查看容器中 httpd 进程的进程 id

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

停止容器

通过下面的命令来停止容器

  1. $ podman stop -l

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

  1. $ podman ps -a

移除容器

你可以通过下面的命令来移除容器

  1. $ podman rm -l

您可以通过运行 podman ps -a 来验证容器是否已成功删除。

网络

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

检查点,迁移和恢复容器

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