podman 教學,如何使用 podman 架設本機 WordPress 網站

看完本篇 podman 教學,你會學到什麼是 podman,podman 的基本指令,並且使用 podman 架設本機 WordPress 網站,進行 WordPress 網站開發。

什麼是 podman

podman 和 Docker 一樣是一種虛擬化技術,可以在作業系統中,建立不同的虛擬 OS,或是建立各種虛擬伺服器或資料庫,不再使用時,隨時能將這些 Server 或 Database 刪除,不會把作業系統弄得亂七八糟。

podman 可用來:

  • 建立虛擬 ubuntu 或其它 linux os
  • 建立 Apache 或各種伺服器
  • 建立 MySQL 或執行各種資料庫

那為什麼不直接用 docker 就好了,有幾個原因:

  1. Kubernetes 已經棄用 Docker
  2. Red Hat 也使用 podman 取代 Docker
  3. Docker 不再是完全免費使用,podman 依舊是免費開放原始碼
  4. podman is daemonless
  5. podman is rootless

podman 不需要先在背景執行服務 (daemonless),不像 Docker 需要一個背景服務來管理所有的容器,一旦服務有問題,所有啟動的容器就一起掛了。

podman 不強制用 root 權限執行,相對比 Docker 安全許多。

如何安裝 podman

podman 是 Linux 的系統工具,現在已經支援 macOS 和 Windows,在 macOS 安裝非常方便,用 Homebrew 一行指令完成安裝。

brew install podman

如何使用 podman 架設 WordPress 網站

範例網站架構如下圖:

img src: Net7 – Blog – Combining containers into pods with Podman

首先建立一個 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

相關文章: 如何使用 Docker 在本機安裝 WordPress 網站