podman

Podman 是一款无守护进程、开源的 Linux 原生工具,旨在使用开放容器计划 (OCI容器容器映像轻松查找、运行、构建、共享和部署应用。Podman 提供了一个命令行界面 (CLI),任何使用过 Docker 容器引擎的人都熟悉。大多数用户可以简单地将 Docker 别名设置为 Podman(别名 docker=podman),而不会出现任何问题。与其他常见的容器引擎(Docker、CRI-O、containerd)类似,Podman 依靠符合 OCI 的容器运行时(runc、crun、runv 等)与作系统交互并创建正在运行的容器。这使得 Podman 创建的正在运行的容器与任何其他常见容器引擎创建的容器几乎没有区别。

Podman 与 Docker 的主要区别

  1. 守护进程:

    Docker 使用单个守护进程(dockerd)来管理容器。所有的容器操作都必须通过这个守护进程进行,这可能会引入单点故障和安全风险。

    Podman 不使用守护进程。它通过直接调用容器运行时接口(如 runC 或其他兼容 OCI 的运行时)来管理容器,从而提高了安全性,并减少了系统资源的占用。

  1. 安全性:

    Docker 在执行容器时默认以 root 用户运行,这可能导致安全隐患。

    Podman 默认支持以非 root 用户身份运行容器,这提供了更好的安全保障。

  1. 体系结构和功能:

    Docker 配置和操作相对复杂,集成了多种功能,如镜像构建、容器运行、网络管理等。

    Podman 提供了更加模块化的设计,可以单独使用或与其他工具(如 Buildah 和 Skopeo)集成使用,这些工具分别负责构建镜像和进行镜像仓库操作。

  1. 兼容性:

    Podman 与 Docker 命令行界面(CLI)高度兼容。大多数情况下,用户可以直接将 docker 命令替换为 podman 命令,而不需要更改其他参数或脚本。

  1. 社区和生态系统:

    Docker 拥有一个庞大且成熟的生态系统和社区,提供大量的资源和插件。

    Podman 虽然是较新的技术,但正在快速发展,得到了 Red Hat 和开源社区的强力支持。

安装和使用podman

1.安装podman

装podman#查找可安装的podman版本
dnf list podman

dnf -y install podman

#修改podman配置文件 
#全局配置: vim /etc/containers/registries.conf
#用户配置: ~/.config/containers/registries.conf
unqualified-search-registries = ["docker.io"]


[[registry]]
    prefix = "docker.io"
    location = "docker.1ms.run"
  
[[registry]]
    prefix = "docker.io"
    location = "hub.rat.dev"
  
[[registry]]
    prefix = "docker.io"
    location = "docker.xuanyuan.me"
  
[[registry]]
    prefix = "docker.io"
    location = "docker.1panel.live"

2.安装podman-compose

#使用 pip 安装(推荐且最简单),这是最官方和推荐的方法,podman-compose 已经打包在 Python PyPI 仓库中。
1.确保已安装 Python3 和 pip
# 检查 Python3 是否已安装
python3 --version

# 安装 pip(如果尚未安装)
dnf -y  install python3-pip

#使用pip安装podman-compose
pip3 install podman-compose

#检查版本
podman-compose --version