菜单导航

探索发现
podman-跨平台Docker桌面程序
探索发现

podman-跨平台Docker桌面程序

NoiseNoise
2025-01-03

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

brew install podman

安装后,您需要创建并启动您的第一台 Podman 计算机:

podman machine init
podman machine start

然后,您可以使用以下方法验证安装信息:

podman info

运行示例容器

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

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 命令用于列出正在创建和正在运行的容器。

podman ps

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

检查正在运行的容器

您可以“检查”正在运行的容器的元数据和有关自身的详细信息。我们甚至可以使用 inspect 子命令查看分配给容器的 IP 地址。由于容器在无根模式下运行,因此不会分配 IP 地址,并且该值将在 inspect 的输出中列为 “none”。

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

对容器进行检查点

对容器执行检查点操作会停止容器,同时将容器中所有进程的状态写入磁盘。 这样,容器可以在以后恢复并继续运行,与 检查站。此功能需要在系统上安装 CRIU 3.11 或更高版本。 此功能不支持作为无根功能;因此,如果您想尝试一下,则需要使用相同的命令但使用 sudo 以 root 身份重新创建容器。

要对容器进行检查点操作,请使用:

sudo podman container checkpoint <container_id>

还原容器

只能对以前检查点的容器恢复容器。还原的容器将 continue 在它被执行检查点的同一时间点运行。 要恢复容器,请使用:

sudo podman container restore <container_id>

还原后,容器将像执行检查点之前一样再次响应请求。

curl http://<IP_address>:8080

迁移容器

要将容器从一个主机实时迁移到另一个主机,容器会在源上执行 checkpoint 操作 系统,传输到目标系统,然后在目标系统上恢复 系统。传输 checkpoint 时,可以指定 output-file。

在源系统上:

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

版权声明

本文为「Noise」原创内容或编译整理;除特别说明外,文中图片并非个人手绘,可能来源于网络、AI 生成、截图等,后期使用 PhotoMator / Procreate 进行处理,仅用于学习与交流。如涉及版权或来源标注不全,请联系处理。未经授权,禁止用于商业用途,禁止抹除水印。转载请注明出处与链接并保留本声明。

...

评论 (0)

评论功能加载中...
Noise

Noise

执迷不悟

推荐阅读

Memory-不负时光摄影相册程序
探索发现

Memory-不负时光摄影相册程序

Noise | 2025-08-10

简介

一个瀑布流摄影图库,也是专为摄影师做的独立网络相册程序,它是基于[Moment](https://github.com/Robert-Stackflow/M

139
AI Movie Clip - 基于python的智能视频剪辑系统
探索发现

AI Movie Clip - 基于python的智能视频剪辑系统

Noise | 2025-08-10

一个基于人工智能的自动视频剪辑系统,能够自动分析视频内容并根据用户需求生成编辑后的视频。该项目为视频剪辑mcp提供了一个新的研究方向,它使用python脚本来分

75
CrossPaste-跨设备的粘贴神器,在任意设备间复制粘贴
探索发现

CrossPaste-跨设备的粘贴神器,在任意设备间复制粘贴

Noise | 2025-07-26

此前已介绍过多个粘贴软件了,如PasteBar等,它们各有所长,但有没有适合不同设备之间使用的呢,有的,CrossPaste就很好满足了跨设备同时复制粘贴的问题

特性

  • 🔄 实时共享:设备之间实时共享粘贴板内容,操作自然流畅。
  • 🖥️ 跨平台统一体验:Mac、Win
94

标签