簡介
Podman 入門將帶您認識一款現代、輕量的容器引擎,它被設計為 Docker 的安全、無根替代方案。與 Docker 不同,Podman 不需要中央守護行程,為管理容器的開發人員和系統管理員提供了更強的安全性和靈活性。其無根架構對於將權限提升最小化放在首位的環境尤其有吸引力。
在本指南中,我們將介紹在 Ubuntu Server 22.04 上安裝和使用 Podman 的基礎知識。我們還將討論使用簡短名稱(例如,nginx)提取容器映像的常見問題,並提供清晰的解決方案,幫助您順利上手 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
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。