Podman 是什么
Podman 是一个由 Red Hat 主导开发的容器引擎,与 Docker 的主要区别在于其无守护进程(daemonless) 的架构。
无守护进程:Docker 所有操作都依赖一个常驻后台的 dockerd 守护进程。一旦该进程出现问题,会影响所有容器。而 Podman 直接与 Linux 内核交互,无需中间层。
资源占用更低:因为没有常驻的守护进程,Podman 在空闲时几乎不占用资源。有测试表明,其内存占用比 Docker 少 60-70%,具体到数值,Docker 守护进程常驻内存约 80-120MB,而 Podman 仅需 30-50MB。
启动更快:Podman 的容器启动速度通常比 Docker 快 20-30%。
安全性更强: Docker 的用户会被加入 docker 组,该权限接近于 root,存在安全隐患。而 Podman 从设计之初就原生支持无 root 权限运行容器,能有效避免容器提权攻击。
攻击面更小:Docker 的守护进程以 root 权限运行,是潜在的攻击目标。Podman 的无守护进程设计显著缩小了潜在的攻击面。
安装
apt update
apt install podman -y
验证:
podman --version
podman version 4.9.3
安装成功:
与 Docker 兼容
podman-docker:这是一个非常实用的工具。安装后,系统会将 docker 命令的调用透明地重定向到 Podman。这意味着你可以在不更改任何脚本或习惯的情况下,背后实际使用 Podman。
podman-compose:Podman 官方提供了 podman-compose 工具,用于解析和运行 docker-compose.yml 文件,实现了对 Docker Compose 工作流的兼容。
安装:
apt install podman-docker -y
输入 docker 命令
docker version
输出 :
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Client: Podman Engine
Version: 4.9.3
API Version: 4.9.3
Go Version: go1.22.2
Built: Thu Jan 1 08:00:00 1970
OS/Arch: linux/amd64
配置短名称解析和国内镜像
Podman 默认不允许使用镜像的短名称(比如 portainer/portainer-ce:latest),它要求镜像名必须明确指定完整的仓库地址。
定位配置文件:你可以编辑系统级的文件 /etc/containers/registries.conf,或者创建用户级的 $HOME/.config/containers/registries.conf 文件(推荐用户级,无需 sudo)。
编辑配置:在配置文件中添加或修改 unqualified-search-registries 选项。
编辑
nano /etc/containers/registries.conf
填入以下内容:
unqualified-search-registries = ["docker.io", "quay.io"]
[[registry]]
prefix = "docker.io"
location = "docker.io"
[[registry.mirror]]
location = "docker.xuanyuan.me"
[[registry.mirror]]
location = "docker.m.daocloud.io"
[[registry.mirror]]
location = "docker.1ms.run"
