iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0

另外,.container內容若是太多怕太混淆,能不能分檔案管理?能。以a2a-batch為例:
位在.config/containers/systemd下(其它像.network、.volume等也一併適用,統稱quadlet檔)

a2a-batch.container
a2a-batch.container.d/
└── environment.conf

需有個a2a-batch.container,再以它為名並尾綴.d建立子目錄,Podman Quadlet會先載入a2a-batch.container內容,後來發現有a2a-batch.container.d子目錄,連同子目錄下所有檔案也一併載入,檔名名稱沒特定規定,別弄什麼特殊字元應該OK。
所以反過來說,沒有a2a-batch.container這個檔案存在,a2a-batch.container.d這個子目錄所有檔案就不會被Podman Quadlet吃進去。
這樣一來,就算像是a2a-batch.container、a2a-ftp.volume是空檔,只要有檔名,檔名尾綴.d的子目錄也會被Podman Quadlet吃進去,這有在實機驗證過。

這篇文章份量好少,其實可以併到昨天的內容。


以下是補充systemctl及podman常用操作指令:
systemctl --user [start|stop|staus|restart|cat] ServiceName
例:(.service檔可以省略)

$ systemctl --user status a2a-batch.service
$ systemctl --user status a2a-ftp-volume.service
$ systemctl --user status a2a-*.service  # 可以用萬用字元一次操作多個服務

而裡面的cat指令則是印出/run/user/<uid>/systemd/generator下的.service檔的內容。

podman quadlet [install|list|print|rm] QuadletFile
除了list指令不用指定QuadletFile參數之外。

  • rm:移除quadlet,若相關服務在運行,需先停用。
[appuser~]$ podman quadlet rm a2a-ftp.volume
Error: unable to remove Quadlet a2a-ftp.volume: quadlet a2a-ftp.volume is running and force is not set, refusing to remove
Error: some quadlets could not be removed
[appuser~]$ systemctl --user stop a2a-ftp-volume
[appuser~]$ podman quadlet rm a2a-ftp.volume
a2a-ftp.volume

執行後,a2a-ftp.volume檔會被刪除,但a2a-ftp.volume.d子目錄及內容不會被刪。
既然a2a-ftp.volume.d的檔案還在,我就直touch一個空檔做install

[appuser~]$ touch a2a-ftp.volume
[appuser~]$ podman quadlet install a2a-ftp.volume 
/home/appuser/.config/containers/systemd/a2a-ftp.volume
[appuser~]$ systemctl --user daemon-reload
[appuser~]$ systemctl --user start a2a-ftp-volume
[appuser~]$ systemctl --user status a2a-ftp-volume
● a2a-ftp-volume.service
     Loaded: loaded (/home/appuser/.config/containers/systemd/a2a-ftp.volume; generated)
     Active: active (exited) since Sun 2026-08-16 18:40:57 CST; 5s ago

最後用pomdan quadlet print a2a-ftp.volume的內容,得到的是空的。pomdan quadlet print不會印出Quadlet檔名尾綴.d子目錄下的檔案內容。

所以pomdan quadlet print是印quadlet檔,如.container、.network、.volume等。而systemctl --user cat是印.service的內容。

另外用podman quadlet的rm和install要小心,像a2a-batch有在.container檔設定Volume連結到a2a-ftp.volume,一但停止服務(systemctl --user stop a2a-ftp-volume),a2a-batch就會跟著停掉。就算a2a-ftp服務啟動而a2a-batch.container檔的Restart參數設為always,也無法自動重啟,完全需手動啟動。


上一篇
.container的Environment架空profile
下一篇
容器之間互Call
系列文
Podman Quadlet-容器服務化(在單體系統到微服務之間)10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言