開機啟動容器

  1. 建立服務設定檔儲存目錄 .config/systemd/user/,並切換工作目錄到該目錄。
    [deyu5@kvm8 ~]$ mkdir -p .config/systemd/user/
    [deyu5@kvm8 ~]$ cd .config/systemd/user/
    
  2. podman 為容器 mylog 產生服務的設定檔,--files 選項自動儲存成 container-mylog.service。
    [deyu5@kvm8 user]$ podman generate systemd --name mylog --files
    /home/deyu5/.config/systemd/user/container-mylog.service
    
  3. 查看產生的 container-mylog.service。
    [deyu5@kvm8 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
    
  4. 重新載入服務。
    [deyu5@kvm8 user]$ systemctl --user daemon-reload
    
  5. 設定開機啟動 container-mylog 服務,且現在啟動。
    [deyu5@kvm8 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.
    
  6. 查詢 container-mylog 服務狀態。
    [deyu5@kvm8 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
    
  7. 以上的 systemd 設定是在登入 deyu5 後,才會啟動 container-mylog 服務,若要重開機後不管有沒有登入 deyu5,都啟動 container-mylog,則必須使用控制 systemd 登入管理命令 loginctl,啟用「用戶保留登入狀態」,系統會在啟動後自動為用戶生出用戶管理器,並且在用戶登出後保持運作,deyu5 啟用保持登入狀態。
  8. RHELv9 預設一般用戶無法啟用 linger。
    [deyu5@kvm8 user]$ loginctl enable-linger deyu5
    Could not enable linger: Access denied
    
  9. 使用 root 啟用 linger deyu5。
    [deyu5@kvm8 ~]$ su -
    Password:
    Last login: Thu Nov 24 10:04:13 CST 2022 from 192.168.122.1 on pts/0
    [root@kvm8 ~]# loginctl enable-linger deyu5
    
  10. deyu5 啟用保持登入狀態後,會建立 /var/lib/systemd/linger/deyu5 檔。
    [root@kvm8 ~]# ll /var/lib/systemd/linger/
    total 0
    -rw-r--r--. 1 root root 0 Nov 24 11:04 deyu5
    
  11. 退出 root,回到 deyu5。
    [root@kvm8 ~]# exit
    logout
    [deyu5@kvm8 ~]$