podman-跨平台Docker桌面程序
podman-跨平台Docker桌面程序
noisePodman 是一款无守护程序的开源 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 | podman machine init |
然后,您可以使用以下方法验证安装信息:
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 | podman inspect basic_httpd | grep IPAddress\": |
测试 httpd 服务器
由于我们没有容器的 IP 地址,我们可以测试主机之间的网络通信 操作系统和使用 Curl 的容器。以下命令应显示我们的 容器化 httpd 服务器。
1 | curl http://localhost:8080 |
查看容器的日志
您也可以使用 Podman 查看容器的日志:
1 | podman logs <container_id> |
查看容器的 PID
并且你可以用 top 在容器中观察 httpd pid。
1 | podman top <container_id> |
对容器进行检查点
对容器执行检查点操作会停止容器,同时将容器中所有进程的状态写入磁盘。 这样,容器可以在以后恢复并继续运行,与 检查站。此功能需要在系统上安装 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 | sudo podman container checkpoint <container_id> -e /tmp/checkpoint.tar.gz |
在目标系统上:
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 来验证容器的删除。