<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>容器 on 计算机知识分享网</title><link>https://jiaochengziyuan.cn/tags/%E5%AE%B9%E5%99%A8/</link><description>Recent content in 容器 on 计算机知识分享网</description><generator>Hugo</generator><language>zh-CN</language><managingEditor>986945193@qq.com (David)</managingEditor><webMaster>986945193@qq.com (David)</webMaster><copyright>Copyright © 2014-至今, David.</copyright><lastBuildDate>Thu, 20 Aug 2026 09:00:00 +0800</lastBuildDate><follow_challenge><feedId>00000000000000000</feedId><userId>00000000000000000</userId></follow_challenge><atom:link href="https://jiaochengziyuan.cn/tags/%E5%AE%B9%E5%99%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>Podman 入门：为什么它是 Docker 的优秀替代品</title><link>https://jiaochengziyuan.cn/p/podman-%E5%85%A5%E9%97%A8%E4%B8%BA%E4%BB%80%E4%B9%88%E5%AE%83%E6%98%AF-docker-%E7%9A%84%E4%BC%98%E7%A7%80%E6%9B%BF%E4%BB%A3%E5%93%81/</link><pubDate>Thu, 20 Aug 2026 09:00:00 +0800</pubDate><author>986945193@qq.com (David)</author><guid>https://jiaochengziyuan.cn/p/podman-%E5%85%A5%E9%97%A8%E4%B8%BA%E4%BB%80%E4%B9%88%E5%AE%83%E6%98%AF-docker-%E7%9A%84%E4%BC%98%E7%A7%80%E6%9B%BF%E4%BB%A3%E5%93%81/</guid><description>&lt;p&gt;如果你用过 Docker，一定对那条常驻在后台的 &lt;code&gt;dockerd&lt;/code&gt; 守护进程不陌生。它功能强大，但也带来一个尴尬的事实：&lt;strong&gt;只要 dockerd 挂了，你所有的容器管理操作就全部失灵&lt;/strong&gt;；而且它默认以 root 身份运行，一旦被攻破，宿主机的 root 权限就直接暴露。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://podman.io/" target="_blank" rel="noopener noreferrer"&gt;Podman&lt;/a&gt;&#13;&#10; 正是为解决这些痛点而生。它由 Red Hat 主导，目标是成为「无需守护进程、无需 root」的容器引擎。&lt;/p&gt;&#10;&lt;h2 id="什么是-podman"&gt;什么是 Podman&lt;/h2&gt;&#10;&lt;p&gt;Podman（&lt;strong&gt;Pod Manager&lt;/strong&gt;）是一个开源的容器引擎，用于开发、管理和运行 OCI（Open Container Initiative）标准的容器与 Pod。最有趣的一点是：&lt;strong&gt;它的命令行参数与 Docker 几乎完全一致&lt;/strong&gt;——你甚至可以把 &lt;code&gt;docker&lt;/code&gt; 直接 alias 成 &lt;code&gt;podman&lt;/code&gt;，现有脚本几乎不用改。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Docker 用户熟悉的操作，在 Podman 里一模一样&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman pull nginx:alpine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman run -d -p 8080:80 --name web nginx:alpine&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman ps&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="核心差异无守护进程--无根容器"&gt;核心差异：无守护进程 + 无根容器&lt;/h2&gt;&#10;&lt;p&gt;Podman 与 Docker 的根本区别体现在架构层面。&lt;/p&gt;&#10;&lt;h3 id="无守护进程daemonless"&gt;无守护进程（Daemonless）&lt;/h3&gt;&#10;&lt;p&gt;Docker 采用 Client/Server 架构：&lt;code&gt;docker&lt;/code&gt; 命令行只是客户端，真正干活的 &lt;code&gt;dockerd&lt;/code&gt; 守护进程常驻后台。Podman 则&lt;strong&gt;没有守护进程&lt;/strong&gt;——每条命令直接通过 &lt;code&gt;runC&lt;/code&gt; 等 OCI runtime 与 Linux 内核交互（借助 &lt;code&gt;conmon&lt;/code&gt; 做进程监控）。&lt;/p&gt;&#10;&lt;p&gt;这意味着：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;没有单点故障，某条命令崩溃不会影响其他容器；&lt;/li&gt;&#10;&lt;li&gt;不需要一个长期运行的特权进程；&lt;/li&gt;&#10;&lt;li&gt;天然契合 Linux 的 &lt;code&gt;systemd&lt;/code&gt; 集成。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="无根容器rootless"&gt;无根容器（Rootless）&lt;/h3&gt;&#10;&lt;p&gt;Docker 早期必须以 root 运行。Podman 通过 &lt;strong&gt;user namespaces&lt;/strong&gt; 让用户以普通身份启动容器，容器内的 root 实际映射到宿主机上的一个非特权 UID，互不干扰。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;无根容器不是&amp;quot;弱化版安全&amp;quot;，而是把风险隔离到了用户层面：即使容器被逃逸，攻击者拿到的也只是该用户的权限，而非整台机器的 root。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="podman-vs-docker-速查"&gt;Podman vs Docker 速查&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;维度&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Docker&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Podman&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;架构&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Client/Server（有守护进程）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无守护进程（直接调用 runtime）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;运行身份&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;默认 root&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;默认无根（rootless）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;单点故障&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;dockerd 挂掉则全崩&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无，命令独立&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pod 概念&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;需 Docker Compose 模拟&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;原生支持 &lt;code&gt;podman pod&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;systemd 集成&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;需自行配置&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;官方推荐 &lt;code&gt;quadlet&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;CLI 兼容性&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;—&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;与 docker 高度一致&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;许可证&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;已转向商业订阅协议&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Apache 2.0 完全开源&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="安装-podman"&gt;安装 Podman&lt;/h2&gt;&#10;&lt;p&gt;不同发行版的安装方式都很简单：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# macOS（通过 Homebrew）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install podman&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman machine init &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; podman machine start&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# Ubuntu / Debian&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt update &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y podman&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# CentOS / Rocky / Fedora&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo dnf install -y podman&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;验证安装：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman --version&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman info &lt;span style="color:#1f2328"&gt;|&lt;/span&gt; head -n &lt;span style="color:#0550ae"&gt;5&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="从-docker-平滑迁移"&gt;从 Docker 平滑迁移&lt;/h2&gt;&#10;&lt;p&gt;如果你已经有一套基于 Docker 的工作流，迁移成本极低：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 1. 建立别名，旧脚本无需改动&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;echo&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#39;alias docker=podman&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6639ba"&gt;source&lt;/span&gt; ~/.bashrc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;# 2. 镜像与容器数据可直接复用（都遵循 OCI 标准）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman images&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;podman run hello-world&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="小结"&gt;小结&lt;/h2&gt;&#10;&lt;p&gt;Podman 并非要&amp;quot;取代&amp;quot;Docker 的一切，而是在&lt;strong&gt;安全模型与架构简洁性&lt;/strong&gt;上给出了更现代的答案。对于新项目、CI 环境、以及注重最小权限的生产部署，无守护进程 + 无根容器的组合非常值得尝试。&lt;/p&gt;&#10;&lt;p&gt;下一篇，我会带你深入 &lt;strong&gt;Podman 无根模式下的常用命令、Pod 编排，以及与 Docker Compose 的兼容实战&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;em&gt;相关阅读：&lt;a href="https://jiaochengziyuan.cn/p/podman-rootless-practice/"&gt;Podman 无根容器实战&lt;/a&gt;&#13;&#10;&lt;/em&gt;&lt;/p&gt;&#10;</description></item></channel></rss>