podman-跨平台Docker桌面程序

podman

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 来验证容器的删除。