看完本篇 podman 教學,你會學到什麼是 podman,podman 的基本指令,並且使用 podman 架設本機 WordPress 網站,進行 WordPress 網站開發。
什麼是 podman
podman 和 Docker 一樣是一種虛擬化技術,可以在作業系統中,建立不同的虛擬 OS,或是建立各種虛擬伺服器或資料庫,不再使用時,隨時能將這些 Server 或 Database 刪除,不會把作業系統弄得亂七八糟。
podman 可用來:
- 建立虛擬 ubuntu 或其它 linux os
- 建立 Apache 或各種伺服器
- 建立 MySQL 或執行各種資料庫
那為什麼不直接用 docker 就好了,有幾個原因:
- Kubernetes 已經棄用 Docker
- Red Hat 也使用 podman 取代 Docker
- Docker 不再是完全免費使用,podman 依舊是免費開放原始碼
- podman is daemonless
- podman is rootless
podman 不需要先在背景執行服務 (daemonless),不像 Docker 需要一個背景服務來管理所有的容器,一旦服務有問題,所有啟動的容器就一起掛了。
podman 不強制用 root 權限執行,相對比 Docker 安全許多。
如何安裝 podman
podman 是 Linux 的系統工具,現在已經支援 macOS 和 Windows,在 macOS 安裝非常方便,用 Homebrew 一行指令完成安裝。
brew install podman
如何使用 podman 架設 WordPress 網站
範例網站架構如下圖:
首先建立一個 pod,然後在同一個 pod 中執行資料庫和 WordPress 網站伺服器,pod 開放 8081 port,我們就可以使用 http:://localhost:8081 開啟本機 WordPress 網站。
#1 使用 podman 建立 pod
pod 的概念和 Kubernetes pod 非常相似,而且 podman 真的可以讀取 kubernetes yaml 檔案來管理 pod 和容器的執行。
podman 就是 pod manager 的意思。
參考說明:
以下範例為直接建立一個 pod,然後把所有 container 放在同一個 pod 執行,這些 container 可以直接使用 localhost 彼此溝通,不必費心各自 IP。
podman pod create --name wordpress-test -p 8081:80
指令說明:
- podman pod create,建立 pod
- –name,指定名稱
- -p,port 對應,外部:內部
注意 pod 建立後就不能改 port mapping。
#2 使用 podman 執行 MariaDB
為什麼不是 MySQL,因為呢,MariaDB 有提供 arm64 版本的 image,可以在 M1 MacBook 上執行,MySQL 沒有,而且 MariaDB 的所有參數和使用方式,和 MySQL 一模一樣,啊就是為了無縫取代 MySQL 👍。
podman run -d --pod=wordpress-test \
-e MYSQL_ROOT_PASSWORD="geheim" \
-e MYSQL_DATABASE="wp" \
-e MYSQL_USER="wordpress" \
-e MYSQL_PASSWORD="w0rdpr3ss" \
--name=wordpress-test-db mariadb
指令說明:
- podman run,執行容器
- -d,run as daemon
- –pod,指定在上面建立的 pod 中執行
- -e,設定環境變數,資料庫的帳號密碼等等
- –name,指定容器名稱,方便管理
#3 使用 podman 執行 WordPress
podman run -d --pod=wordpress-test \
-e WORDPRESS_DB_NAME="wp" \
-e WORDPRESS_DB_USER="wordpress" \
-e WORDPRESS_DB_PASSWORD="w0rdpr3ss" \
-e WORDPRESS_DB_HOST="127.0.0.1" \
--name wordpress-test-web wordpress
指令說明:
- podman run,執行容器
- -d,run as daemon
- –pod,指定在上面建立的 pod 中執行
- -e,設定環境變數,資料庫的帳號密碼等等
- –name,指定容器名稱,方便管理
啊不就和上面的 MariaDB 一樣,是啊,容器執行都差不多。
本機架設 WordPress 完成,開啟 http://localhost:8081,全新的 WordPress 安裝開始。
參考教學: Net7 – Blog – Combining containers into pods with Podman