Podman 基礎入門

第七章:進階操作與最佳實務

與 systemd 整合:Quadlet

Podman 容器預設是「前景程序」,主機重開機後容器不會自動回來。Quadlet 是 Podman 提供的功能,能把容器設定寫成 systemd 服務單元,享有開機自動啟動、當機自動重啟等好處。

~/.config/containers/systemd/ 建立一個 .container 檔案,例如 myapp.container

[Unit]
Description=My App

[Container]
Image=localhost/myapp:latest
PublishPort=8080:80
Volume=myapp-data:/data

[Service]
Restart=always

[Install]
WantedBy=default.target

接著重新載入並啟動:

systemctl --user daemon-reload
systemctl --user start myapp
systemctl --user enable myapp
journalctl --user -u myapp -f    # 查看服務日誌

資源限制

避免單一容器吃光主機資源:

podman run -d \
  --memory=512m \
  --cpus=1.0 \
  --name myapp myimage

Healthcheck:自動健康檢查

podman run -d \
  --health-cmd="curl -f http://localhost/ || exit 1" \
  --health-interval=30s \
  --name myapp myimage

podman ps    # STATUS 欄位會顯示 healthy / unhealthy

最佳實務小整理

  • 盡量使用 rootless 模式執行容器,降低主機被攻擊時的風險
  • 映像檔標籤(tag)盡量寫明確版本號,避免 latest 在不同時間拉到不同版本
  • 把設定與機密資料(密碼、API key)放在環境變數或 secret,不要寫死在 Containerfile 裡
  • 善用 .containerignore(類似 .gitignore),避免把不必要的檔案複製進映像檔,讓建置更快、映像檔更小

這些技巧能讓你的容器服務在正式環境中跑得更穩定、更安全。