22. 在 Ubuntu Server 上開始使用 Podman:完整指南

簡介

Podman 入門將帶您認識一款現代、輕量的容器引擎,它被設計為 Docker 的安全、無根替代方案。與 Docker 不同,Podman 不需要中央守護行程,為管理容器的開發人員和系統管理員提供了更強的安全性和靈活性。其無根架構對於將權限提升最小化放在首位的環境尤其有吸引力。

在本指南中,我們將介紹在 Ubuntu Server 22.04 上安裝和使用 Podman 的基礎知識。我們還將討論使用簡短名稱(例如,nginx)提取容器映像的常見問題,並提供清晰的解決方案,幫助您順利上手 Podman。

Podman 入門

往期文章:

01. Ubuntu Server 簡介 – SysOSX: AI & Cloud

02. 如何架設您的第一台 Ubuntu Server:初學者指南 – SysOSX: AI & Cloud

03.掌握 Ubuntu Server 的 Linux 命令列 – SysOSX: AI & Cloud

04. Ubuntu Server 使用者與權限管理:全面指南 – SysOSX: AI & Cloud

05. Ubuntu Server 網路基礎:全面指南 – SysOSX: AI & Cloud

06. 在 Ubuntu Server 上安裝和管理軟體:完整指南 – SysOSX: AI & Cloud

07.修補和更新 Ubuntu Server:全面指南 – SysOSX: AI & Cloud

08. 保護您的 Ubuntu Server:強化與防護的實用步驟 – SysOSX: AI & Cloud

09. Ubuntu Server 稽核與記錄

10. Ubuntu Server 系統監控工具:全面指南 – SysOSX: AI & Cloud

11. Ubuntu Server 集中式記錄:必讀指南 – SysOSX: AI & Cloud

12. Ubuntu Server 稽核與合規:最佳實務 – SysOSX: AI & Cloud

13.為託管和 Web 應用程式設定您的 Ubuntu Server:終極指南 – SysOSX: AI & Cloud

14. 在一台 Ubuntu Server 上託管多個網站:實用技巧 – SysOSX: AI & Cloud

15. Ubuntu Server 儲存與磁碟管理:簡明指南 – SysOSX: AI & Cloud

16. 在 Ubuntu Server 上設定檔案共用服務:完整指南 – SysOSX: AI & Cloud

17. 在 Ubuntu 上設定安全的資料庫伺服器:MySQL 與 MariaDB – SysOSX: AI & Cloud

18. 如何在 Ubuntu Server 上設定和使用 LVM:全面指南 – SysOSX: AI & Cloud

19. KVM 虛擬化入門:Ubuntu Server 初學者指南 – SysOSX: AI & Cloud

20. 如何在 Ubuntu Server 上安裝 Docker:容器化逐步指南 – SysOSX: AI & Cloud

21. LXD 入門:輕鬆安裝容器 + 速查表 – SysOSX: AI & Cloud



什麼是 Podman,為什麼使用它?

Podman 是一款容器引擎,旨在建構、執行和管理容器,注重安全性和靈活性。以下是 Podman 日益流行的原因:

  • 無守護行程架構:Podman 不依賴背景服務(不同於 Docker 以守護行程為基礎的模型),從而減少了攻擊面並提高了安全性。
  • 無根容器:以非 root 使用者身分執行容器,進一步增強安全性。
  • 與 Docker 相容的命令:Podman 的 CLI 旨在與 Docker 相容,讓您可以無縫使用諸如 podman pull 或 podman run 的命令。
  • Systemd 整合:輕鬆地將容器作為系統服務進行管理。

步驟 1:在 Ubuntu Server 22.04 上安裝 Podman

1.1 更新您的系統

在安裝 Podman 之前,請確保您的系統已更新,以避免相容性問題:

sudo apt update && sudo apt upgrade -y  

1.2 安裝 Podman

Podman 包含在 Ubuntu 的預設套件庫中,因此您可以直接使用 apt套件管理器安裝:

sudo apt install podman -y  

1.3 驗證安裝

安裝完成後,驗證已安裝的 Podman 版本,以確保它已準備好使用:

podman --version  

範例輸出:

podman version 3.4.4


步驟 2:執行您的第一個 Podman 容器

2.1 提取容器映像

Podman 使用容器映像來執行應用程式。首先提取輕量級的 Alpine Linux 映像:

podman pull alpine  

2.2 執行容器

使用 Alpine 映像執行容器:

podman run --rm -it alpine sh  

此命令會在 Alpine 容器內啟動一個互動式 Shell。您可以測試一些基本命令,例如:

echo "Hello from Podman!"  

2.3 退出容器

要退出容器,請輸入:

exit  


步驟 3:理解 Podman 簡短名稱解析

簡短名稱的問題

當使用簡短名稱(例如,nginx)提取容器映像時,Podman 需要知道應該搜尋哪個登錄來尋找映像。如果沒有正確設定,您可能會遇到以下錯誤:

Error: short-name "nginx" did not resolve to an alias and no unqualified-search registries are defined in "/etc/containers/registries.conf"  

為什麼會出現這個錯誤?

Podman 需要一個設定檔(registries.conf)來定義它應該搜尋映像的容器登錄。如果該檔案遺失或設定不當,Podman 將無法解析諸如 nginx 的簡短名稱。


步驟 4:修復簡短名稱解析錯誤

4.1 找到或建立 registries.conf 檔案

檔案registries.conf通常位於/etc/containers/registries.conf。檢查檔案是否存在:

ls /etc/containers/registries.conf  

如果它不存在,請建立它:

sudo nano /etc/containers/registries.conf  

4.2 新增預設登錄設定

將以下設定新增到檔案中:

[registries.search]  
registries = ['docker.io', 'quay.io']  

  • docker.io:指 Docker Hub,即最常用的容器登錄。
  • quay.io:另一個流行的容器登錄。

儲存並退出檔案(按 Ctrl+O,然後按 Ctrl+X,如果使用 nano)。

4.3 重試提取命令

登錄設定完成後,嘗試再次提取 nginx 映像:

podman pull nginx  

Podman 現在應該可以將簡短名稱 nginx 解析為 docker.io/library/nginx,並成功提取映像。


步驟 5:以非 root 使用者身分執行容器

Podman 的一個突出特點是,它能夠在不需要 root 權限的情況下執行容器。設定方法如下:

5.1 切換到非 root 使用者

以一般使用者身分登入(例如,uadmin):

su - uadmin  

驗證 Podman 可供非 root 使用者使用:

podman info  

5.2 修復非 root 使用者的權限問題

如果您在以非 root 使用者身分執行 Podman 時遇到 permission denied 錯誤,則很可能是由於使用者家目錄的所有權不正確。

檢查家目錄的所有權:

ls -ld /home/uadmin  

如果該目錄歸 root 所有,請修復它:

sudo chown -R uadmin:uadmin /home/uadmin  

手動建立所需的 .local目錄:

mkdir -p /home/uadmin/.local/share/containers  
sudo chown -R uadmin:uadmin /home/uadmin/.local  

再次測試 Podman:

podman info  

Podman 現在應該可以成功地以非 root 使用者身分執行了。


步驟 6:適合初學者的實用 Podman 命令

以下是一些基本的 Podman 命令,可幫助您快速上手:

  • 列出正在執行的容器:
podman ps
  • 列出所有容器(包括已停止的):
podman ps -a
  • 停止正在執行的容器:
podman stop <container-id>
  • 刪除容器:
podman rm <container-id>
  • 刪除映像:
podman rmi <image-name>

參考文件:
Podman 入門 | Podman


    結論

    Podman 是一款安全、輕量且靈活的容器引擎,非常適合 Ubuntu Server 22.04。在本指南中,我們介紹了:

    • 安裝 Podman。
    • 執行您的第一個容器。
    • 修復簡短名稱解析錯誤。
    • 以非 root 使用者身分執行容器。

    按照這些步驟操作,您現在已經打下了堅實的基礎,可以開始探索 Podman 並有效地管理容器。憑藉其無根功能和與 Docker 相容的 CLI,Podman 是現代容器化工作流程的出色工具。

    敬請期待:
    下一篇文章我們將討論 在雲端平台上部署 Ubuntu Server ,例如 GCP、AWS 和 Azure。

    發表留言