1.Podman简介
Podman是一个无守护进程的容器引擎,用于在Linux系统上开发、管理和运行OCI容器。
Podman的主要功能包括:
- 创建和管理容器:Podman可以创建、启动、停止和删除容器,以及管理容器的生命周期。
- 容器镜像管理:Podman可以下载、存储和导出容器镜像,以及创建基于镜像的容器。
- 容器网络管理:Podman可以创建和管理容器的网络连接,包括桥接网络和覆盖网络。
- 容器日志管理:Podman可以查看容器的日志信息,包括标准输出和错误输出。
- 容器资源管理:Podman可以限制容器的资源使用,包括CPU、内存和存储等。
Podman是一个命令行工具,提供了一个与Docker兼容的命令行界面。Podman控制下的容器可以由root或非特权用户运行,这增加了系统的安全性和灵活性。
总的来说,Podman是一个功能强大的容器管理工具,可以用于开发和运行OCI容器,无需使用Docker守护进程,具有轻量级和高效的特点。
2.Podman安装
下载
Podman安装 | (podman.io)https://podman.io/docs/installation
先决条件:由于 Podman 使用 WSL,因此您需要最新版本的 Windows 10 或 Windows 11。在 x64 上,WSL 需要内部版本 18362 或更高版本,arm19041 系统需要 64 或更高版本。在内部,WSL 使用虚拟化,因此系统必须支持并启用硬件虚拟化。如果在 VM 上运行 Windows,则必须具有支持嵌套虚拟化的 VM。
安装Podman
安装 Windows Podman 客户端首先要下载 Podman Windows 安装。Windows安装程序是随每个Podman版本一起构建的,可以从官方 Github 发布页面下载。请务必下载 4.1 或更高版本。
下载后,只需运行exe文件,然后重新启动新终端。在新终端输入podman machine init
如果重启输入 podman machine init 之后出现以下情况,可以再次关闭终端,再重启之后输入 podman machine init,就可以了
Error: head request failed: https://github.com/containers/podman-wsl-fedora/releases/latest/download/rootfs.tar.xz: Head "https://github.com/containers/podman-wsl-fedora/releases/latest/download/rootfs.tar.xz": read tcp 192.168.133.156:60309->20.205.243.166:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
初始化过程完成后,可以启动和停止Podman
至此,Podman安装完成,关闭当前所有终端,重启新终端后会有如下界面,进入就可以正常使用了
Rootful&Rootless
在WSL 上,podman既可以在根用户(root)下运行,也可以在非特权用户(root less)下运行。为了与Linux上的Podman保持行为一致性,默认为无根。注意:有根容器和无根容器是不同的,彼此隔离。针对其中一个的Podman命令(例如Podman ps)不会代表另一个的结果/状态。
Podman 是一个容器引擎工具,允许用户在 Linux 上运行应用程序容器。通常,在 Linux 上运行容器需要 root 权限,但 Podman 可以允许非 root 用户使用容器。简单来说,如果你是一个非 root 用户,并且想要使用 Podman 运行容器,那么你可以直接安装和运行 Podman 软件,而无需获取 root 权限。这个功能非常有用,因为它可以避免不必要的安全风险和权限访问问题。
需注意,虽然 Podman 允许非 root 用户使用容器,但这也意味着您的容器将受到更多限制,例如无法运行全部操作系统等。因此,建议您在需要时与管理员协商并根据情况选择正确的权限。
Docker 默认情况下在 Linux 上是以 root 权限运行,这就意味着如果您想使用 Docker 运行容器,您必须作为 root 用户登录到系统中。这可能会带来一些安全风险,因为 root 用户拥有系统上所有资源的完全控制权,而这并不总是安全或必要的。
不过,Docker 也提供了对非 root 用户访问容器的支持。与 Podman 不同的是,Docker 要求您手动将非 root 用户添加到 docker 组中以实现这一点。这个方法需要管理员权限,并且需要特殊的配置才能正常使用。
与 Docker 相比,Podman 更适合需要以非 root 用户身份管理容器的用户。Podman 可以直接在普通用户下运行,无需任何特殊配置或添加用户到任何组中。这可以使整个容器生命周期更加安全和可靠。
总之,Podman 和 Docker 的区别在于如何允许非 root 用户访问容器。Podman 允许非 root 用户直接运行容器,而 Docker 则需要特殊配置和权限来实现类似的功能。
切换rootful
podman machine stop
podman machine set --rootful
切换rootless
podman machine stop
podman machine set --rootful=false
常用命令
What is Podman? — Podman documentation
Podman用法与Docker用法十分类似,所以你用过Docker,Podman上手应该很快。
3.补充:
在centos中,也可以通过yum install podman来安装podman使用,不过这种方法下载的podman不是最新版本,而是比较旧的版本。比如在centos7.7.1908中,通过yum install podman下载安装podman的版本信息为1.6.4。
注意,由于上面centos的版本为centos7.7.1908,所以当centos使用overlay2存储驱动时无法正常使用1.6.4版本的podman,podman 1.6.4版本要想使用overlay存储驱动正常工作,centos版本要7.8以上才可以。