Podman 的基本设置与使用

Podman 是 libpod 库提供的一项实用工具。它可用于创建和维护容器。下面的教程将教你如何设置 Podman 以及使用 Podman 执行一些基本命令。若您使用的是 Mac 或 Windows 电脑,则应遵循 Mac 和 Windows 教程来设置远程 Podman 客户端。注意:代码示例旨在以非root用户身份运行,并在需要root权限提升时使用sudo命令。

Podman 的基本设置与使用

Podman 是 libpod 库提供的一项实用工具。它可用于创建和维护容器。下面的教程将教你如何设置 Podman 以及使用 Podman 执行一些基本命令。

若您使用的是 Mac 或 Windows 电脑,则应遵循 Mac 和 Windows 教程来设置远程 Podman 客户端。

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

安装Podman

有关安装或构建 Podman 的信息,请参阅安装说明。

熟悉 Podman

运行一个示例容器

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

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

由于容器是以分离模式运行的(由 podman run 命令中的 -d 表示),Podman 会在容器运行后打印容器 ID。请注意,我们使用端口转发来访问HTTP服务器。要成功运行,至少需要slirp4netns v0.3.0版本。

列出正在运行的容器

Podman ps 命令用于列出正在创建和运行的容器。

podman ps

注意:如果在ps命令后添加-a,Podman将显示所有容器。

检查正在运行的容器

你可以“检查”正在运行的容器,以获取其元数据和详细信息。我们甚至可以使用 inspect 子命令查看分配给容器的 IP 地址。由于容器是以无 root 模式运行的,因此不会分配 IP 地址,在 inspect 的输出中该值将显示为“none”。

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

测试httpd服务器

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

curl http://localhost:8080

查看容器的日志

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

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" "-"

查看容器的进程ID

而且你可以使用 podman top 命令查看容器中 httpd 的进程ID。

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

为容器创建检查点

为容器创建检查点会停止容器,同时将容器中所有进程的状态写入磁盘。通过这种方式,容器之后可以被恢复,并从检查点的确切时间点继续运行。此功能需要系统上安装CRIU 3.11或更高版本。该功能不支持无root权限模式;因此,如果你想尝试使用它,需要以root用户身份重新创建容器,使用相同的命令但要加上sudo。

要为容器创建检查点,请使用:

sudo podman container checkpoint <container_id>

恢复容器

只有之前已创建检查点的容器才能被恢复。恢复后的容器将从其被创建检查点的确切时间点继续运行。要恢复容器,请使用:

sudo podman container restore <container_id>

容器恢复后,将像创建检查点之前一样再次响应请求。

curl http://<IP_address>:8080

迁移容器

要将容器从一个主机实时迁移到另一个主机,需在迁移的源系统上为该容器创建检查点,然后将其传输到目标系统,并在目标系统上进行恢复。传输检查点时,可以指定一个输出文件。

在源系统上:

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 及其子命令的更多信息,请查看 README.md

原文地址:https://github.com/containers/podman/blob/main/docs/tutorials/podman_tutorial.md

  

游手好闲地学习,并不比学习游手好闲好。 —— 约翰·贝勒斯
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号