容器掛載儲存空間

  1. 之前啟動的 container-mylog.service 服務,沒有掛載 host 上的目錄。
  2. 實現掛載 host 上的目錄到容器,先建立要被掛載的目錄 container_journal。
    [deyu5@kvm3 ~]$ mkdir container_journal
    
  3. podman 使用 image myrsyslog,建立一個名 mylog。
    --privileged 給 container 權限,否則無法存取掛載的主機目錄。
    -v host.dir:container.dir:Z 掛載主機的目錄到容器的目錄,
       掛載的 :Z 選項,要 podman 重新 reabel 掛載目錄,以符合容器內 SELinux label。
    
    [deyu5@kvm3 ~]$ podman create \
    --name mylog \
    --privileged \
    --volume /home/deyu5/container_journal/:/var/log/journal/:Z \
    dywrsyslog
    be2df97e15bef589f73d5ae329134825dba8ff293a8603709ddb1fe4ac68c56e
    
  4. *建立服務設定檔儲存目錄 .config/systemd/user/,並切換工作目錄到該目錄。
    [deyu5@kvm3 ~]$ mkdir -p .config/systemd/user/
    [deyu5@kvm3 ~]$ cd .config/systemd/user/
    
  5. podman 為容器 mylog 產生服務的設定檔,--files 選項自動儲存成 container-mylog.service。
    [deyu5@kvm3 user]$ podman generate systemd --name mylog --files
    /home/deyu5/.config/systemd/user/container-mylog.service
    
  6. 查看產生的 container-mylog.service。
    [deyu5@kvm3 user]$ ll
    total 12
    -rw-r--r--. 1 deyu5 deyu5  691 Nov 12 15:53 container-mylog.service
    drwxr-xr-x. 2 deyu5 deyu5 4096 Nov 12 15:33 default.target.wants
    drwxr-xr-x. 2 deyu5 deyu5 4096 Nov 12 15:33 multi-user.target.wants
    
  7. 重新載入服務。
    [deyu5@kvm3 user]$ systemctl --user daemon-reload
    
  8. 設定開機啟動 container-mylog 服務,且現在啟動。
    [deyu5@kvm3 user]$ systemctl --user enable --now container-mylog.service
    Created symlink /home/deyu5/.config/systemd/user/multi-user.target.wants/container-mylog.service
    → /home/deyu5/.config/systemd/user/container-mylog.service.
    Created symlink /home/deyu5/.config/systemd/user/default.target.wants/container-mylog.service
    → /home/deyu5/.config/systemd/user/container-mylog.service.
    
  9. 查詢 container-mylog 服務狀態。
    [deyu5@kvm3 user]$ systemctl --user status container-mylog.service
    ● container-mylog.service - Podman container-mylog.service
       Loaded: loaded (/home/deyu5/.config/systemd/user/container-mylog.service; en>
       Active: active (running) since Fri 2021-11-12 15:57:38 CST; 27s ago
         Docs: man:podman-generate-systemd(1)
      Process: 15708 ExecStart=/usr/bin/podman start mylog (code=exited, status=0/S>
     Main PID: 15725 (conmon)
       CGroup: /user.slice/user-1000.slice/user@1000.service/container-mylog.service
               ├─15716 /usr/bin/fuse-overlayfs -o ,lowerdir=/home/deyu5/.local/shar>
               ├─15720 /usr/bin/slirp4netns --disable-host-loopback --mtu=65520 --e>
               ├─15725 /usr/bin/conmon --api-version 1 -c be2df97e15bef589f73d5ae32>
               └─be2df97e15bef589f73d5ae329134825dba8ff293a8603709ddb1fe4ac68c56e
                 └─15735 rsyslogd -n
    
  10. 以上的 systemd 設定是在登入 deyu5 後,才會啟動 container-mylog 服務,若要重開機後不管有沒有登入 deyu5,都啟動 container-mylog,則必須使用控制 systemd 登入管理命令 loginctl,啟用「用戶保留登入狀態」,系統會在啟動後自動為用戶生出用戶管理器,並且在用戶登出後保持運作,deyu5 啟用保持登入狀態。
    [deyu5@kvm3 user]$ loginctl enable-linger deyu5
    
  11. deyu5 啟用保持登入狀態後,會建立 /var/lib/systemd/linger/deyu5 檔。
    [deyu5@kvm3 user]$ ll /var/lib/systemd/linger
    total 0
    -rw-r--r--. 1 root root 0 Nov 12 15:36 deyu5