开源实例之Podman
前言
Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. Containers can either be run as root or in rootless mode.
Podman(Pod Manager tool)是 RedHat 推出的,无守护进程、不依赖 root 的容器管理工具,是 Docker 的“无痛”替代品。
官网地址是https://podman.io
Podman 的诞生
Podman 的诞生是一种必然,或者说,即便不是 Podman,也必然会出现另一款替代 Docker 的产品。这里面政治斗争或许大于技术因素。
在 Docker 一家独大的时候,Google 的 Kubernetes 是最流行的 Docker 编排工具。甚至 Kubernetes 为 Google 公司带来的收益,比 Docker 公司自身付费服务的收益还要高。
因此 Docker 公司推出了 Swarm,妄图吃下 Kubernetes 的蛋糕。Google 做出的回应是,联合 Redhat、Microsoft、IBM、Intel、Cisco 等公司,成立了 OCI(Open Containers Initiative),制定 CRI 等相关标准。随之各大公司宣布他们的容器工具只兼容该标准,其他容器引擎借势发展起来,Docker 只能屈服适配这套标准,也就此被拉下了神坛,角色弱化为众多容器引擎之一。
在这样的背景下,Podman 被创造出来,兼容大部份 Docker 命令,进一步分化 Docker 的市场。巨头们是不会允许核心技术掌握在“新兴公司”手里,受制于人的。
Podman 的优势
相较 Docker,Podman 有两个突出的优点,一是无守护进程(daemonless),二是不需要 root 权限(rootless)。这是直接关系到安全性的根本问题。
daemonless
Docker 依赖一个叫 dockerd 的守护进程(docker daemon),而 Podman 不需要守护进程。这里面的区别是,Docker 生成的容器(container)都是守护进程的子进程,最大的隐患就是导致单点故障;而 Podman 的容器是独立的系统进程。
rootless
Docker 的守护进程需要以 root 用户运行,这给安全性带来巨大的隐患。而 Podman 不需要用 root 运行守护进程,容器的运行权限与当前登录用户相同。
Podman 替换 Docker
Podman 兼容大部份 Docker 命令,甚至官网给出的替换方法只有一条:
alias docker=podman
后记
本开源实例系列使用 Docker 作为容器引擎,未实装 Podman。本篇仅作为介绍。