Podman 是一款无守护程序的开源 Linux 原生工具,同时GUI支持WIN、MAC,旨在使用开放容器计划 (OCI) 容器和容器映像轻松查找、运行、构建、共享和部署应用程序,Podman 控制下的容器可以由 root 或非特权用户运行。Podman 使用 libpod 库管理整个容器生态系统,包括 Pod、容器、容器镜像和容器卷。Podman 专注于帮助您维护和修改 OCI 容器映像的所有命令和功能,例如拉取和标记。它允许您在生产环境中创建、运行和维护这些容器和容器镜像。
官网:https://container-desktop.com
安装说明
你可以通过官网下载适用于WIN或mac的GUI程序
或者
可以从 Podman.io 网站下载
通过 Brew 安装
如果您确实希望使用 Brew,则必须首先安装 Homebrew。一旦您 已设置 brew,您可以使用命令安装 Podman
1
|
brew install podman
|
安装后,您需要创建并启动您的第一台 Podman 计算机:
1 2 |
podman machine init podman machine start |
然后,您可以使用以下方法验证安装信息:
1
|
podman info
|
运行示例容器
此示例容器将运行一个非常基本的 httpd 服务器(名为 basic_httpd),该服务器仅提供其索引 页。
1
|
podman run --name basic_httpd -dt -p 8080:80/tcp docker.io/nginx
|
由于容器在分离模式下运行,由命令中的 -d 表示,因此 Podman 将在容器 ID 运行后打印容器 ID。请注意,我们使用端口转发是为了能够 访问 HTTP 服务器。要成功运行,至少需要 slirp4netns v0.3.0。podman run
列出正在运行的容器
Podman ps 命令用于列出正在创建和正在运行的容器。
1
|
podman ps
|
注意:如果将 -a 添加到 ps 命令,Podman 将显示所有容器。
检查正在运行的容器
您可以“检查”正在运行的容器的元数据和有关自身的详细信息。我们甚至可以使用 inspect 子命令查看分配给容器的 IP 地址。由于容器在无根模式下运行,因此不会分配 IP 地址,并且该值将在 inspect 的输出中列为 “none”。
1 2 3 |
podman inspect basic_httpd | grep IPAddress": "SecondaryIPAddresses": null, "IPAddress": "", |
测试 httpd 服务器
由于我们没有容器的 IP 地址,我们可以测试主机之间的网络通信 操作系统和使用 Curl 的容器。以下命令应显示我们的 容器化 httpd 服务器。
1
|
curl http://localhost:8080
|
查看容器的日志
您也可以使用 Podman 查看容器的日志:
1 2 3 4 5 6 |
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。
1 2 3 4 |
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 或更高版本。 此功能不支持作为无根功能;因此,如果您想尝试一下,则需要使用相同的命令但使用 sudo 以 root 身份重新创建容器。
要对容器进行检查点操作,请使用:
1
|
sudo podman container checkpoint <container_id>
|
还原容器
只能对以前检查点的容器恢复容器。还原的容器将 continue 在它被执行检查点的同一时间点运行。 要恢复容器,请使用:
1
|
sudo podman container restore <container_id>
|
还原后,容器将像执行检查点之前一样再次响应请求。
1
|
curl http://<IP_address>:8080
|
迁移容器
要将容器从一个主机实时迁移到另一个主机,容器会在源上执行 checkpoint 操作 系统,传输到目标系统,然后在目标系统上恢复 系统。传输 checkpoint 时,可以指定 output-file。
在源系统上:
1 2 |
sudo podman container checkpoint <container_id> -e /tmp/checkpoint.tar.gz scp /tmp/checkpoint.tar.gz <destination_system>:/tmp |
在目标系统上:
1
|
sudo podman container restore -i /tmp/checkpoint.tar.gz
|
还原后,容器将像执行检查点之前一样再次响应请求。这 容器将继续在目标系统上运行的时间。
1
|
curl http://<IP_address>:8080
|
停止容器
要停止 httpd 容器:
1
|
podman stop <container_id>
|
您还可以使用 ps 子命令检查一个或多个容器的状态。在这种情况下,我们应该 使用 -a 参数列出所有容器。
1
|
podman ps -a
|
移除容器
要删除 httpd 容器:
1
|
podman rm <container_id>
|
您可以通过运行 podman ps -a 来验证容器的删除。
评论前必须登录!
注册