什么是Podman?能否替代Docker?Podman快速入門

什么是Podman

Podman(POD Manager)是一個開源的無守護進程(daemonless)容器引擎,用于管理容器、容器鏡像、容器卷和網絡。

它兼容 OCI 標準,可以運行 Docker 鏡像,并且設計上與 Docker CLI 命令高度兼容。

podman logo

Podman 的特點與優勢

  • Daemonless進程,更輕

Podman 直接使用 RunC(或其他符合 OCI 的運行時)來創建和運行容器。每個容器都是當前用戶的一個子進程。

基于 Daemonless 能夠提供更安全(減少攻擊面)、更穩定(守護進程崩潰不影響現有容器)、資源消耗更低、更符合 Linux 進程模型。

對比 Docker,依賴于一個長期運行的后臺進程 (dockerd) 來管理容器。

  • Rootless容器,更安全

普通用戶無需 sudo 或 root 權限即可直接啟動和管理容器。

極大提升安全性(容器進程以用戶權限運行,即使容器被攻破,影響范圍也限于該用戶)、滿足更嚴格的安全合規要求、允許多用戶在同一系統上安全地管理各自的容器。

對比 Docker,目前也支持 Rootless 容器,但需要進行特殊配置,且默認任然需要 root 權限。

  • 基于標準設計,兼容好

Podman 支持 OCI 標準,且與 Docker 兼容,大部分命令與 Docker 命令相同。

Docker 用戶遷移成本小,學習曲線低,現有腳本通常只需替換命令即可工作。

  • Kubernetes Pod 原生支持:

Podman 對 Kubernetes 的 Pod 概念有原生支持。可以輕松創建和管理包含多個共享命名空間(網絡、IPC、UTS)容器的 Pod。

可以在創建、啟動、檢查和管理Pod。直接使用Podman操作Kubernetes YAML,從Pod生成Kubernetes YAML,并部署到現有的Kubernetes環境中。

Podman 安裝

  • 在 Window和 MacOS 上安裝 Podman

容器是基于 Linux 內核的,因此和 Docker 一樣,在 Window 和 MacOS 上運行容器時需要用到虛擬機。

和 Docker Machine 一樣,Podman 也有 Podman Machine 虛擬機。

如在 MacOS 上安裝 Podman

brew?install?podman
podman?info
podman?machine?init
podman?machine?start
podman?machine?ls
podman?run?hello-world

在 Windows上,每臺 Podman 機器都由一個虛擬化的Windows Subsystem for Linux(WSLv2)發行版提供支持。

安裝后,可以直接從 Windows PowerShell(或CMD)提示符運行podman命令,該命令會與在WSL環境中運行的podman服務進行遠程通信。

或者,如果您更喜歡Linux提示符和Linux工具,也可以直接從WSL實例訪問Podman。

除了直接使用 podman 外,Podman Desktop 也可以作為圖形界面工具,

  • 在 Linux 上安裝 Podman

在 Linux 上安裝 Podman 的最簡單方法是使用包管理器。

#?Arch?Linux?&?Manjaro?Linux
sudo?pacman?-S?podman#?Alpine?Linux
sudo?apk?add?podman#?CentOS?Stream/Fedora
sudo?dnf?-y?install?podman#?Debian/Ubuntu
sudo?apt-get?-y?install?podman#?Gentoo
sudo?emerge?app-containers/podman#?openSUSE
sudo?zypper?install?podman

Podman 使用

podman 命令和 docker 命令基本一樣,設置一個簡單的別名?alias docker=podman?就能無縫切換。

  • 查找鏡像

Podman會在不同的鏡像倉庫中搜索。

podman?search?httpd?--filter=is-official
  • 拉取鏡像

建議使用完整的鏡像名稱(如docker.io/library/httpd,而不是httpd),以確保您使用的是正確的鏡像。

podman?pull?docker.io/library/httpd
  • 運行一個容器

示例容器將運行一個基礎的httpd服務器

podman?run?-dt?-p?8080:80/tcp?docker.io/library/httpd

容器是在分離模式-d下運行的,Podman將在執行命令后打印出容器ID。-t?選項還會添加一個偽終端,以便在交互式shell中運行任意命令。-p?添加一個端口映射,將 httpd 的 80 端口映射到主機的8080端口。

  • 查看容器狀態

podman ps命令用于列出已創建和正在運行的容器。

podman?ps

如果添加?-a?參數,Podman 將顯示所有容器,包括已創建、已退出、正在運行等。

  • 測試httpd服務

通過端口映射,httpd 服務的 80 端口映射到宿主機的 8080 端口。

curl?http://localhost:8080
  • 其他命令

其他如?podman logs?、podman inspect、?podman stoppodman rm?、podman images?和 docker 的命令一致,可以查看詳細的 podman 或 docker 的命令行文檔。

Podman和Docker生態對比

對比項目DockerPodman
Daemonlessdockerd
Rootless需要特殊配置默認rootless
MachineDocker MachinePodman Machine
ComposeDocker ComposePodman Compose
DesktopDocker DesktopPodman Desktop
DockerfileDockerfileContainerfile

Podman 和 Docker 該如何選?

如果對安全是否有更高的要求,推薦 Podman

  • Podman 是開源的,由CNCF社區托管。避免了單一廠商的鎖定。
  • Podman 默認是 Rootless。業務邏輯運行在容器內,避免了越權問題。
  • Podman 默認不運行后臺進程。減少容器運行時消耗的資源,以及安全攻擊面。

如果對產品成熟度和生態完善性有更高的要求,推薦 Docker

  • 當前很多DevOps工具默認集成了 Docker。如 Jenkines、ArgoCD等
  • Podman 還處于 CNCF 的沙盒階段,距離孵化和畢業還需要很長一段時間。
  • Podman 功能上大部分兼容 Docker,但任然有一些功能還未完全兼容,如不支持 Docker 的?--restart=always(依賴守護進程實現容器自啟),Podman 需通過 Systemd 單元文件管理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91314.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91314.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91314.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開通保存圖片權限

直接粘貼就可以用 上干貨 可以的話希望點個start/* 小程序特有相關 */mp-weixin: {appid: VITE_WX_APPID,setting: {urlCheck: false,minified : true //是否壓縮js},usingComponents: true,"lazyCodeLoading": "requiredComponents", //按需注入"pe…

【趙渝強老師】大數據交換引擎Sqoop

Sqoop是SQL To Hadoop的簡稱,它是一款開源的工具,主要用于在Hadoop(Hive)與傳統的數據庫(Oracle、MySQL等)間進行數據的傳遞。通過使用Sqoop可以將一個關系型數據庫中的數據導進到Hadoop的HDFS中&#xff0…

C++進階-map的應用

目錄 1.預備知識 2.map的補充知識 2.1map的插入方式 2.2訪問鍵和值 2.3map::operator[]的補充 2.4另外一些map的成員函數的補充 3.map的應用實踐-力扣刷題-前k個高頻單詞 3.1解法1 3.2解法2 3.3解法3 4.map的應用實踐-力扣刷題-隨機鏈表的復制 4.1C語言解法 4.2C解…

【三維重建工具】NeRFStudio、3D GaussianSplatting、Colmap安裝與使用指南

目錄 一、NeRFStudio安裝1.安裝(ubuntu系統)2.安裝(windows系統) 二、安裝tinycudann三、Colmap安裝與使用1. 安裝依賴2. 安裝colmap3.使用colmap3.1 可視化界面使用3.2 Nerfstudio命令行調用Colmap3.3 colmap結果不準時的修復3.4…

Mybatis05-動態sql

一、應用場景MyBatis 的 動態 SQL 是指根據不同的條件動態拼接生成 SQL 語句的能力。它的最大優勢是:避免寫多個 XML 映射語句、避免 SQL 冗余、提升代碼復用性和可維護性。示例1:用戶可以通過勾選框,勾選不同的數據進行批量刪除,…

VSCODE 選中多行 需要同時按住alt鍵才可以

在 VS Code 中,如果你發現 必須按住 Alt 鍵才能選中多行(即“列選擇”或“塊選擇”模式),而直接拖動鼠標無法多選,可能是由于以下原因導致的:1. 檢查是否啟用了“列選擇模式”VS Code 默認情況下&#xff1…

2025前端面試真題以及答案-不斷整理中,問題來源于牛客真題

一、 項目內存泄露react與vue的渲染機制有哪些不同react fiber架構vue2與3,為什么用proxy代替defineproperty性能優化有哪些三欄布局實現方式重排與重繪一個對話聊天框如何減少重排(我回答的是絕對定位,將聊天框定位在下面,類似于…

雷軍的 IP 革命:人格化力量如何重塑商業規則|創客匠人

小米 YU7 發布會 3 分鐘售罄 20 萬臺的奇跡,撕開了一個時代真相:當商業競爭進入深水區,決定勝負的不再是產品參數,而是創始人 IP 的人格穿透力。雷軍僅憑個人影響力撬動數十億級交易,這絕非偶然,而是人格化…

SpringBoot3:應對C10K并發挑戰的優化指南

嘿,哥們!還在為服務的并發量上不去而頭疼嗎?用戶量一上來,CPU、內存就告急,接口響應慢得像蝸牛?別慌,今天我們就來盤一盤,怎么用最新的Spring Boot 3,把服務性能調教到極…

響應式編程入門教程第三節:ReactiveCommand 與 UI 交互

響應式編程入門教程第一節:揭秘 UniRx 核心 - ReactiveProperty - 讓你的數據動起來! 響應式編程入門教程第二節:構建 ObservableProperty<T> — 封裝 ReactiveProperty 的高級用法 響應式編程入門教程第三節&#x…

500+技術棧覆蓋:Web測試平臺TestComplete的對象識別技術解析

在用戶界面(UI)測試領域,傳統的測試工具往往依賴于XPath或CSS選擇器來定位頁面元素。然而,在面對動態變化的界面、多語言支持或是跨越多種技術框架的應用時,這些傳統方法常導致腳本失效,增加了維護成本。 …

研究人員利用提示注入漏洞繞過Meta的Llama防火墻防護

Trendyol應用安全團隊發現了一系列繞過技術,使得Meta的Llama防火墻在面對復雜的提示注入攻擊時防護失效。這一發現引發了人們對現有大語言模型(LLM)安全措施準備情況的擔憂,并凸顯出在企業日益將大語言模型嵌入工作流程時&#xf…

Shell 腳本系統學習 · 第5篇:多命令順序執行的三種方式詳解(`;`、``、`||`)

在日常的 Linux 運維與腳本編寫中,我們經常需要依次執行多條命令。本篇將帶你徹底搞懂三種命令順序執行方式:;、&& 和 ||,并通過實用示例掌握它們的區別與應用場景。一、為什么要了解多命令執行方式? 在實際運維或腳本編寫…

K8s存儲系統(通俗易懂版)

Kubernetes中存儲中有四個重要的概念:Volume、PersistentVolume PV、PersistentVolumeClaim PVC、StorageClass一、存儲系統核心概念Volume(卷)定義:Kubernetes 中最基礎的存儲單元,用于將外部存儲掛載到 Pod 中的容器…

小白學Python,標準庫篇——隨機庫、正則表達式庫

一、隨機庫1.隨機生成數值在random庫中可以隨機生成數值的方法有uniform()、random()、randint()、randrange()等。(1)uniform()方法uniform(參數1, 參數2)方法用于生成參數1到參數2之間的隨機小數,其中參數的類型都為數值類型。示例代碼&…

Qt窗口:菜單欄

目錄 一、窗口預覽 二、菜單欄 快捷鍵 子菜單 分割線 圖標 內存泄露 一、窗口預覽 在前面幾篇文章中,或者說,Qt初學階段,接觸到的都是QWidget,QWidget指控件,往往作為一個窗口的一部分出現。所謂的窗口&#x…

STM32裸機開發(中斷,輪詢,狀態機)與freeRTOS

裸機:沒有操作系統,程序是單流程的(比如一個大循環里依次執行各個功能,或者用中斷嵌套處理事件)。優點是資源占用極少(幾乎不占 RAM/Flash)、執行流程直觀;但復雜項目里,…

電腦上如何查看WiFi密碼

打開控制面板>點擊網絡和Internet在查看網絡和共享中心找到網絡狀態和任務點擊進去點擊連接的WLAN在WLAN狀態中點擊無線屬性在無線網絡屬性中點擊安全,點擊顯示字符(H)就可以顯示密碼了

文心一言4.5企業級部署實戰:多模態能力與Docker容器化測評

隨著大語言模型在企業服務中的應用日益廣泛,如何選擇一款既能滿足多模態創作需求,又具備良好企業級適配性的AI模型成為了關鍵問題。文心一言4.5作為百度最新開源的大模型,不僅在傳統的文本處理上表現出色,更是在多模態理解和企業級…

VUE Promise基礎語法

目錄 異步和同步 異步的問題 new Promise語法 promise的狀態 promise.then() Promise.resolve() Promise.reject() Promise.all() Promise.race() Promise.catch() Promise.finally() 異步和同步 同步模式下,代碼按順序執行,前一條執行完畢后…