Podman 的基本设置和使用

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

如果您在 Mac 或 Windows PC 上运行,则应遵循 Mac 和 Windows 教程 设置远程 Podman 客户端。

注意:代码样本旨在作为非root用户运行和如果出现使用 sudo说明需要root权限来执行命令。

安装 Podman

有关安装Podman,请参阅 安装说明

熟悉 Podman

运行示例容器

该示例容器将运行一个非常基本的 httpd 服务器(称为 basic_httpd),仅为其索引提供服务页。

podman run --name basic_httpd -dt -p 8080:80/tcp docker.io/nginx

因为容器以分离模式运行,以 -dpodman run 命令,podman容器 ID 运行后将打印。请注意,我们使用端口转发才能实现 访问 HTTP 服务器。为了成功运行,至少需要 slirp4netns v0.3.0。

列出正在运行的容器

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

podman ps

注:如果您添加 -aps 命令,podman 将显示所有容器。

检查正在运行的容器

您可以”检查”正在运行的容器以获取元数据和有关其自身的详细信息。我们甚至可以使用 inspect子命令查看分配给容器的 IP 地址。由于容器以rootless模式运行,因此不会分配 IP 地址,并且该值将在检查输出中列为”无”。

podman inspect basic_httpd | grep IPAddress\":
            "SecondaryIPAddresses": null,
            "IPAddress": "",

测试 httpd 服务器

由于我们没有容器的IP地址,我们可以使用curl测试主机操作系统和容器之间的网络通信。以下命令应显示我们的索引页面 容器化 httpd 服务器。

curl http://localhost:8080

查看容器的日志

您也可以使用 Podman 查看容器的日志:

podman logs <container_id>
10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"
10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.55.1" "-"

查看容器的 pid

您可以top子命令观察容器中的 httpd服务 的 pid 。

podman top <container_id>
  UID   PID  PPID  C STIME TTY          TIME CMD
    0 31873 31863  0 09:21 ?        00:00:00 nginx: master process nginx -g daemon off;
  101 31889 31873  0 09:21 ?        00:00:00 nginx: worker process

checkpoint容器

checkpoint容器会停止容器,同时将容器中所有进程的状态写入磁盘。 有了这个,容器稍后可以恢复并在与容器完全相同的时间点继续运行 检查站。此功能需要在系统上安装 CRIU 3.11 或更高版本。 此功能不支持rootless模式;因此,如果您想尝试它,则需要使用相同的命令但使用 sudo 将容器重新创建为 root。

要检查容器使用情况:

sudo podman container checkpoint <container_id>

恢复容器

仅对于先前checkpoint的容器才可以恢复容器。恢复后的容器将 在被检查点完全相同的时间点继续运行。 要恢复容器使用:

sudo podman container restore <container_id>

恢复后,容器将像checkpoint之前一样再次响应请求。

curl http://<IP_address>:8080

迁移容器

为了不停机将容器从一个主机迁移到另一个主机,容器会在源上进行检查 迁移系统,转移到目的地系统,然后在目的地恢复系统。传输checkpoint时,可以指定输出文件。

在源系统上:

sudo podman container checkpoint <container_id> -e /tmp/checkpoint.tar.gz
scp /tmp/checkpoint.tar.gz <destination_system>:/tmp

在目的地系统上:

sudo podman container restore -i /tmp/checkpoint.tar.gz

恢复后,容器将像检查点之前一样再次回答请求。这个容器将继续在目的地系统上运行的时间。

curl http://<IP_address>:8080

停止容器

停止 httpd 容器:

podman stop <container_id>

您还可以使用以下方式检查一个或多个容器的状态 ps 子命令。在这种情况下,我们应该这样做 用【】的 -a 列出所有容器的参数。

podman ps -a

删除容器

要删除 httpd 容器:

podman rm <container_id>

您可以通过运行来验证容器的删除 podman ps -a

集成测试

有关如何在环境中设置和运行集成测试的更多信息,请查看集成测试 README.md

更多信息

有关 Podman 及其子命令的更多信息,请查看 asciiart 演示 README.md 页。

Leave a Comment