跳转到内容
搜索 RunEntLinux 文档

仅搜索 RunEntLinux 通用文档,各发行版文档使用各自的搜索入口。

    浏览当前文档目录

    EL 8:Podman 取代 Docker

    EL 8 做出过一个影响深远的决定:官方仓库不再提供 Docker,容器工具链换成了 Podman、Buildah 与 Skopeo 三件套。今天 EL 生态”无守护进程、rootless 优先”的容器风格,就是从这一版定型的。

    Docker 的架构是一个常驻的 root 守护进程(dockerd)加 CLI 客户端;所有容器都是 dockerd 的子进程,守护进程故障即全部容器受牵连,且守护进程拥有 root 权限,攻击面大。

    Red Hat 的选择是重写工具链:

    • Podman:无守护进程,CLI 直接通过 OCI 运行时(runc/crun)拉起容器,容器可以是调用者自己的子进程;
    • Buildah:专注镜像构建(可不用 Dockerfile,逐条命令构建);
    • Skopeo:专注镜像在仓库间的检查、复制与签名。

    三者共享同一套镜像存储与 OCI 标准,与 Docker 生态(镜像格式、Docker Hub、Compose 文件)保持兼容。

    项EL 7EL 8
    官方容器引擎Docker(rhel 渠道)Podman
    守护进程dockerd(root 常驻)无
    rootless 容器不支持/实验一等公民
    镜像构建docker buildpodman build / buildah
    systemd 集成依赖 docker.service容器即普通 unit(Quadlet)
    • 命令习惯:Podman CLI 与 Docker 高度兼容,alias docker=podman 可覆盖绝大多数日常操作;差异集中在需要守护进程语义的命令(如 docker events、远程 API)。
    • rootless:普通用户可以直接跑容器,无需加入 docker 组(等价于 root 的风险);CI 与多租户场景显著更安全。
    • systemd 集成:EL 8 时代用 podman generate systemd,EL 10 起推荐 Quadlet 声明式 unit。
    • Compose:podman-compose / Podman 原生 compose 支持可用,但行为细节与 docker compose 有差异,生产编排建议直接落 systemd/Quadlet 或 Kubernetes 侧方案。
    安装并确认 Podman
    sudo dnf install podman buildah skopeo
    podman --version
    podman info --format '{{.Host.Security.Rootless}}'
    1. 盘点现有 docker 命令与脚本,按 CLI 兼容度替换;
    2. 镜像与数据:podman 与 docker 共享 OCI 镜像格式,但本地存储不互通,需重新 pull 或 skopeo copy;
    3. 编排层迁移到 systemd unit / Quadlet。