FreeChat
Open main menu
ChatGPT知识
搜索
搜索
关闭
Previous
Previous
Next
Next
Podman vs Docker:有什么区别?
sockstack
/
138
/
2023-11-15 00:48:30
<p><span style="color: red; font-size: 18px">ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。</span><br><a href="https://ckai.xyz/?sockstack§ion=detail" target="__blank">https://ckai.xyz</a><br><br></p> <article class="_2rhmJa"><div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 424px; background-color: transparent;"> <div class="image-container-fill" style="padding-bottom: 56.230000000000004%;"></div> <div class="image-view" data-width="754" data-height="424"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/23995457-850d0c33421076c2.png" data-original-width="754" data-original-height="424" data-original-format="image/png" data-original-filesize="100092" data-image-index="0" style="cursor: zoom-in;" class="" src="//upload-images.jianshu.io/upload_images/23995457-850d0c33421076c2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/754/format/webp"></div> </div> <div class="image-caption">image.png</div> </div> <p>容器编排工具是当今最重要的 Web 开发技术之一,许多强大的技术都在争夺行业主导地位。</p> <p>Podman 是一款 Red Hat 产品,旨在使用类似 Kubernetes 的方法<strong>构建、运行和管理容器,作为主要参与者的可靠替代品,它吸引了开发人员的注意力。</strong></p> <p>我们将比较 Podman 与Docker,后者是近十年来的<strong>标准容器化工具,因为这两种技术存在根本差异,但也非常适合协同工作。</strong></p> <h2>目录</h2> <ul> <li>Podman vs Docker:有什么区别?</li> </ul> <h1>目录</h1> <ul> <li>什么是容器编排?</li> <li>什么是Docker?</li> <li>什么是Podman? <ul> <li>架构</li> <li>根权限</li> <li>安全</li> <li>Systemd</li> <li>构建镜像</li> <li>Docker Swarm</li> <li>一体式 vs 模块化</li> </ul> </li> <li>结论</li> <li>经常问的问题 <ul> <li>Podman 能否取代 Docker?</li> <li>Podman 与 Docker 有何不同?</li> <li>Podman 比 Docker 更安全吗?</li> <li>Podman 比 Docker 好吗?</li> </ul> </li> </ul> <h2>什么是容器编排?</h2> <p>容器是独立的软件包,包括代码及其依赖项:库、工具、设置和运行时。业界迅速采用容器作为容器化架构的核心组件,因为它们提供了更快的部署和可扩展性,并且在开发和暂存阶段统一工作。</p> <p>容器重量轻、便携且安全,可提供与任何环境兼容的隔热空间。通过将软件与操作系统分离,容器可以转移到任何位置(例如,从 Linux 到 Windows 系统),避免阻止它们工作的错误和错误。</p> <p>一些最流行的编排技术是<a href="https://links.jianshu.com/go?to=https%3A%2F%2Fwww.imaginarycloud.com%2Fblog%2Fdocker-vs-kubernetes%2F" target="_blank">Docker</a>、 <a href="https://links.jianshu.com/go?to=https%3A%2F%2Fwww.imaginarycloud.com%2Fblog%2Fdocker-swarm-vs-kubernetes%2F" target="_blank">Docker Swarm、</a> Kubernetes 和<a href="https://links.jianshu.com/go?to=https%3A%2F%2Fwww.imaginarycloud.com%2Fblog%2Fnomad-vs-kubernetes%2F" target="_blank">Nomad</a>,我们已经在博客中分析和比较了所有这些技术。</p> <h2>什么是Docker?</h2> <p><strong>Docker 是标准的容器管理技术</strong>。它在行业中的分量如此之大,以至于当大多数人想到容器时,他们都会想到 Docker。</p> <p><a href="https://links.jianshu.com/go?to=https%3A%2F%2Fwww.docker.com%2F" target="_blank">Docker</a>成为容器编排的瑞士军刀,在其他专门的替代方案可用之前包含许多功能。它必须成长为一个独立的、自给自足的工具,能够随着管理容器的复杂性增加而处理开发人员的所有需求。</p> <p>它很快成为一个包含为特定任务开发的工具的<strong>一体化解决方案。</strong>一个是 Docker Swarm,这是一种本地 Docker 功能,可让您集群和调度 Docker 引擎,另一个是旨在创建和管理容器群的工具。</p> <p>Docker 的附属工具处理与容器编排相关的所有任务,从负载平衡到网络,使其成为行业的首选,除了是既定的参考技术。</p> <p>但这种自给自足有其缺点。尽管它是一个强大的系统,可以在其所有开发阶段运行和创建容器,但其他工具很难与之交互。随着近年来针对特定任务的许多其他专门工具开始出现,Docker 成为许多开发人员的起点,他们将一些操作分配给其他更轻量级的平台和工具。</p> <h2>什么是Podman?</h2> <p><a href="https://links.jianshu.com/go?to=https%3A%2F%2Fdocs.podman.io%2Fen%2Flatest%2F" target="_blank">Podman</a>是一种开源的 Linux 原生工具,旨在根据<a href="https://links.jianshu.com/go?to=https%3A%2F%2Fopencontainers.org%2F" target="_blank">开放容器倡议 (OCI)</a>标准开发、管理和运行容器和 Pod。作为<a href="https://links.jianshu.com/go?to=https%3A%2F%2Fwww.redhat.com%2Fen" target="_blank">Red Hat</a>开发的用户友好的容器编排器,它是 RedHat 8 和 CentOS 8 中的默认容器引擎。</p> <p><strong>它是一组命令行工具中的一个</strong>,旨在处理容器化过程的不同任务,可以作为模块化框架工作。这套包括:</p> <p><strong>Podman</strong> - pod 和容器镜像管理器<br> <strong><a href="https://links.jianshu.com/go?to=https%3A%2F%2Fbuildah.io%2F" target="_blank">Buildah</a></strong> - 容器构建器<br> <strong><a href="https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fcontainers%2Fskopeo" target="_blank">Skopeo</a></strong> - 容器镜像检查管理器<br> <strong><a href="https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fopencontainers%2Frunc" target="_blank">runc</a></strong> - 容器运行器和 podman 和 buildah 的功能构建器<br> <strong><a href="https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fcontainers%2Fcrun" target="_blank">crun</a></strong> - 可选运行时,为无根容器提供更大的灵活性、控制和安全性</p> <p>这些工具还可以与任何与 OCI 兼容的容器引擎(如 Docker)一起使用,从而可以轻松过渡<strong>到 Podman</strong>或将其与现有的 Docker 安装一起使用。Kubernetes 可以使用 Podman 吗?是的,它可以。事实上,它们在某些方面是相似的。</p> <p>Podman 对容器有不同的概念方法。顾名思义,Podman 可以创建协同工作的容器“pods”,<strong>这一功能类似于 Kubernetes pods</strong>。Pod 将单独的容器组织在一个共同的名称下,以将它们作为单个单元进行管理。</p> <p>主要的好处是开发人员可以共享资源,在 pod 中为同一个应用程序使用不同的容器:一个容器用于前端,另一个用于后端,还有一个数据库。<strong>Pod 定义可以导出到与 Kubernetes 兼容的 YAML 文件</strong>并应用于 Kubernetes 集群,从而使容器能够更快地进入生产环境。</p> <p>Podman的另一个定义特征<strong>是它是无守护进程的</strong>。守护进程是在后台运行的程序,用于处理没有用户界面的服务、进程和请求。这是容器引擎的独特之处,因为它实际上并不依赖于守护进程,而是将容器和 Pod 作为子进程启动。</p> <p>您可能会问 **“我为什么要使用 Podman?” **作为开发和管理工具,它具有独特的优势,使其成为在适当情况下可行且有趣的 Docker 替代品。或者是与 Docker 并肩工作的强大补充,因为它支持与 Docker 兼容的 CLI 界面。</p> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 340px;"> <div class="image-container-fill" style="padding-bottom: 34.0%;"></div> <div class="image-view" data-width="1000" data-height="340"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/23995457-c24e70a3631a720a.png" data-original-width="1000" data-original-height="340" data-original-format="image/png" data-original-filesize="67151" data-image-index="1" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <a href="" target="_blank">Podman's interest at Google's Trends 2015 - 2023</a><p></p> <p></p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 343px;"> <div class="image-container-fill" style="padding-bottom: 34.300000000000004%;"></div> <div class="image-view" data-width="1000" data-height="343"><img referrerpolicy="no-referrer" data-original-src="//upload-images.jianshu.io/upload_images/23995457-7af00fb3905d0969.png" data-original-width="1000" data-original-height="343" data-original-format="image/png" data-original-filesize="64638" data-image-index="2" style="cursor: zoom-in;" class="image-loading"></div> </div> <div class="image-caption">image.png</div> </div> <a href="" target="_blank">Docker's interest at Google's Trends 2015 - 2023</a><p></p> <p>根据谷歌趋势,Docker 和 Podman 在过去五年中的兴趣都在波动,其中 Docker 一直更受欢迎。但眼下,这两款容器编排工具已经达到了用户兴趣的顶峰。</p> <p>Podman 和 Docker 有许多共同点,但也有一些根本区别。这些并不能使一个比另一个更好,但可能是决定最适合特定项目的决定性因素。</p> <h3>架构</h3> <p><strong>Docker 使用 daemon</strong>,一个在后台运行的持续程序,来创建图像和运行容器。<strong>Podman 具有无守护程序架构</strong>,这意味着它可以在启动容器的用户下运行容器。Docker 有一个由守护进程调解的客户端-服务器逻辑;后者不需要调解员。</p> <h3>根权限</h3> <p>由于 Podman 没有管理其活动的守护进程,因此还为其容器分配了 root 权限。Docker 最近在其守护进程配置中添加了无根模式,但 Podman 首先使用了这种方法,并将其作为一项基本功能进行了推广。这是因为下一点。</p> <h3>安全</h3> <p><strong>Podman 比 Docker 更安全吗?</strong>Podman 允许容器使用非根权限。无根容器被认为比具有根权限的容器更安全。在 Docker 中,守护进程具有 root 权限,这使它们成为攻击者的首选网关。Podman 中的容器默认没有 root 访问权限,在 root 和无 root 级别之间添加了天然屏障,提高了安全性。尽管如此,它仍然可以运行 root 和无 root 容器。</p> <h3>Systemd</h3> <p>没有守护进程,Podman 需要另一个工具来管理服务并支持在后台运行容器。Systemd 为现有容器创建控制单元或生成新容器。Systemd 还可以与 Podman 集成,允许它运行默认启用 systemd 的容器,无需任何修改。</p> <p>通过使用 systemd,供应商可以将他们的应用程序作为容器安装、运行和管理,因为现在大多数应用程序都是专门以这种方式打包和交付的。</p> <h3>构建镜像</h3> <p>作为一个自给自足的工具,<strong>Docker 可以自己构建容器镜像</strong>。<strong>Podman 需要另一个名为 Buildah 的工具的帮助</strong>,它表达了它的专业性质:它是为运行而不是自己构建容器而设计的。</p> <h3>Docker Swarm</h3> <p><strong>Podman 不支持 Docker Swarm</strong>,这可能会将其排除在使用此功能的项目的选项之外,因为使用 Docker Swarm 命令会产生错误。Podman 最近添加了对 Docker Compose 的支持,使其与 Swarm 兼容,克服了这一限制。Docker 自然而然地与 Swarm 配合得很好。</p> <h3>一体式 vs 模块化</h3> <p>也许这就是这两种技术的关键区别:Docker 是一个整体的、强大的、独立的工具,具有所有隐含的优点和缺点,处理整个周期中的所有容器化任务。Podman 采用模块化方法,依靠专门的工具来完成特定任务。</p> <h2>结论</h2> <p>Podman 和 Docker 都是强大的容器编排工具,具有独特的优势和差异。虽然 Docker 已成为近十年的行业标准,但 Podman 的创新架构和容器管理方法使其成为开发人员的可靠替代方案,尤其是那些在 Linux 环境中工作的开发人员。</p> <p>无论您选择使用一种或另一种,还是两者结合使用,了解它们的异同将有助于您根据项目需求做出最佳决策。</p> <h2>经常问的问题</h2> <h3>Podman 能否取代 Docker?</h3> <p>是的,Podman 可以在许多用例中替代 Docker。它提供与 Docker 类似的容器运行时环境和工具,并且在某些情况下,它可能提供额外的好处,例如提高安全性和灵活性。</p> <h3>Podman 与 Docker 有何不同?</h3> <p>Podman 与 Docker 的不同之处在于它不需要单独的守护进程来运行容器,因此更加轻量和安全。它还更好地支持以非 root 用户身份运行容器,这可以提高安全性。此外,Podman 可以在本地运行 Kubernetes pod,而无需像 Docker Compose 这样的单独工具。</p> <p><em>你想知道吗?提示:应该是Docker + Kubernetes。</em></p> <h3>Podman 比 Docker 更安全吗?</h3> <p>Podman 有时被认为比 Docker 更安全,因为它不需要单独的守护进程来运行容器,这减少了潜在安全漏洞的攻击面。它还更好地支持以非 root 用户身份运行容器,这可以提高安全性。</p> <h3>Podman 比 Docker 好吗?</h3> <p>Podman 是否优于 Docker 取决于具体的用例和要求。有时,Podman 可能提供更好的安全性和灵活性,但 Docker 可能更适合某些环境或应用程序。评估这两个选项对于确定哪个最能满足项目的需求很重要。</p> </article>
Podman vs Docker:有什么区别?
作者
sockstack
许可协议
CC BY 4.0
发布于
2023-11-15
修改于
2024-11-12
上一篇:软件:常用 Linux 软件汇总,值得收藏
下一篇:干货!极速迅雷下载纯净win10镜像(附资源)