iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0

從單體系統角度看待容器服務化,用到.network與.container就夠了,再學其他如.kube、.pod則就要開始理解微服務思維了。不過今天要講的.volume,是把昨天在.container設定Volume的參數,獨立成一個服務,概念上很接近古早時代的網路上的芳鄰。

以下是基於podman 5.6.0的建置,目前還沒有升到5.8.2的迫切性,設定方式可能有變。

事先在HOME目錄下建置FTP1子目錄以便區隔目前的FTP子目錄做測試。
建立a2a-ftp.volume:vi .config/containers/systemd/a2a-ftp.volume

# a2a-ftp.volume
[Volume]
VolumeName=a2a-ftp
Driver=local
Type=none
Device=%h/FTP1
Options=bind

Driver、Type、Device與Options這四個參數後面再說。先重載服務

$ systemctl --user daemon-reload
$ systemctl --user start a2a-ftp-volume.service

.volume與.network一樣,啟動成功後,可以用podman quadlet list看STATUS是active/exited,服務名稱也是把副檔名變成服務名稱的尾綴,如:
a2a-net.network --> a2a-net-network.service
a2a-ftp.volume --> a2a-ftp-volume.service

啟動完成後,可以去/run/user//systemd/generator看a2a-ftp-volume.service的內容,我這裡建appuser的uid是1001。

# Automatically generated by /usr/lib/systemd/user-generators/podman-user-generator
# 
# a2a-ftp.volume
[X-Volume]
VolumeName=a2a-ftp
Driver=local
Type=none
Device=%h/FTP1
Options=bind


[Unit]
Wants=podman-user-wait-network-online.service
After=podman-user-wait-network-online.service
SourcePath=/home/appuser/.config/containers/systemd/a2a-ftp.volume
RequiresMountsFor=%t/containers

[Service]
ExecStart=/usr/bin/podman volume create --ignore --driver local --opt device=%h/FTP1 --opt type=none --opt o=bind a2a-ftp
SyslogIdentifier=%N
Type=oneshot
RemainAfterExit=yes

最重要的是ExecStart的內容,相當於執行了podman volume create指令。

最後怎麼在.container設定Volume呢?

Volume=a2a-ftp.volume:/FTP1:z

記住要用小寫的z才能多容器共用資料夾。設完要記得daemon-reload並重啟服務才能生效。


Volume的參數說明:

  • Type:是指檔案系統(FileSystem Type)與Device參數搭配
    • none:bind mount現有目錄,Device值如本例的%h/FTP1
    • nfs:掛載NFS Server,Device值類似:10.1.2.100:/share/FTP,相當於執行mount -t nfs 10.1.2.100:/share/FTP
    • ext4、xfs:掛載ext4或xfs檔案系統的硬碟,Device值類似:/dev/sdb1
    • cifs:掛載Windows的SAMBA,Device值類似://server/share
    • tmpfs:RAM-based filesystem,搭配tmpfs mount設定,有用到再研究了。
  • Driver:主要有local和image兩種。image是volume plugin進階用法,有機會再研究了。
  • Options:除了bind,還有rw(可讀寫)等設定。

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

尚未有邦友留言

立即登入留言