首頁 > 歷史

Docker 與 Podman

作者:由 楊同學程式設計 發表于 歷史日期:2022-09-25

怎樣讓守護程序執行

Docker 與 Podman

碼頭工人

正如我們所知,容器化的發展始於 Docker,其中守護程序管理整個程序,併成為最流行和廣泛使用的容器管理系統。

但!您是否認為容器化只有一種工具,並且沒有比這更有效的容器化方法了。

在這個故事中,我們可以得到以下問題的答案:

a) 為什麼選擇 Docker?

b) 為什麼我們不應該使用 docker?

c) 我們有其他選擇嗎?

d) 我們什麼時候可以使用容器和影象來代替 docker images / docker 容器?

讓我們先從瞭解 docker 開始吧!

Docker 是一個軟體平臺,可讓您快速構建、測試和部署應用程式。Docker 將軟體打包成稱為容器的標準化單元,其中包含軟體執行所需的一切,包括庫、系統工具、程式碼和執行時。使用 Docker,您可以將應用程式快速部署和擴充套件到任何環境中,並且知道您的程式碼將執行。

我們也可以在某種程度上將 docker 容器假設為 VM,但堅持下去!

與硬體被虛擬化的虛擬機器不同,在 Docker 中,執行的容器共享主機作業系統核心。

Docker 與 Podman

碼頭工人架構:

Docker 與 Podman

讓我們瞭解一下 docker 主要元件:

Docker 守護程序:

一個持續的後臺程序,有助於管理/建立 Docker 映像、容器、網路和儲存卷。

Docker Engine REST API:

應用程式用來與 Docker 守護程序互動的 API;它可以被 HTTP 客戶端訪問。

Docker CLI:

用於與 Docker 守護程序或 Docker 命令互動的 Docker 命令列客戶端。

docker也有一些問題:

安全問題。

對於 Docker 操作,所有步驟都需要由 root 執行,即容器所需的特權升級。

如果任何時候 docker 守護程序失敗,所有子程序都會進入孤立狀態。

由於 Docker 在單個程序上執行,它可能導致單點故障。

到目前為止,我們已經瞭解了 Docker 的基礎知識,現在讓我們來了解一下 Podman!

播客:

Podman 是一個開源的 Linux 原生工具,旨在開發、管理和執行容器。作為 Red Hat 開發的使用者友好型容器編排器,Podman 是 RedHat 8 和 CentOS 8 中的預設容器引擎。

Podman也是一個

守護程序的容器引擎,用於在 Linux 系統上開發、管理和執行 OCI 容器。容器既可以以 root 身份執行,也可以在無 root 模式下執行。

Docker 與 Podman

Podman 是一組命令列工具

,旨在處理容器化過程的不同任務,可以作為模組化框架工作。該套件包括以下模組:

Podman

— pod 和容器映像管理器

Buildah

— 容器構建器的模組

Skopeo

—容器映像檢查模組

runc

— 容器執行器和功能構建器到 podman 和 buildah

crun

— 可選執行時,可為無根容器提供更大的靈活性、控制和安全性。

現在可以對 podman 有另一種想法,比如它是否可以與 k8s 一起使用?

是的,它可以。事實上,Kubernetes 和 Podman 在某些方面是相似的。

Podman 可以建立協同工作的容器“pod”,

這一功能類似於 Kubernetes pod

。Pod 以共同的名稱組織單獨的容器,以將它們作為單個單元進行管理。

在帶有 k8s 的 podman 中:

Pod 定義可以匯出到與 Kubernetes 相容的 YAML 檔案

,這使得開發人員可以共享資源,在 pod 內為同一個應用程式使用不同的容器:一個容器用於前端,另一個容器用於後端,以及一個數據庫

Podman 沒有守護程序

Podman 是對容器引擎的獨特理解,因為它實際上並不依賴於守護程序,而是將容器和 Pod 作為子程序啟動。

我們應該使用 podman 嗎?

Podman 作為開發和管理工具具有獨特的優勢,使其在適當的環境中成為 Docker 的可行且有趣的替代品。或者是與 Docker 並肩工作的強大補充,因為它支援與 Docker 相容的 CLI 介面。

暫時就這些了,學習愉快!

將附帶新的部落格敬請期待!