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
因为容器以分离模式运行,以 -d 在 podman run
命令,podman容器 ID 运行后将打印。请注意,我们使用端口转发才能实现 访问 HTTP 服务器。为了成功运行,至少需要 slirp4netns v0.3.0。
列出正在运行的容器
podman ps
命令用于列出创建和运行容器的列表。
podman ps
注:如果您添加 -a 到 ps 命令,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 页。