附註:
- 本教學課程適用於 Oracle 提供的免費實驗室環境。
- 其使用 Oracle Cloud Infrastructure 證明資料、租用戶以及區間的範例值。完成實驗室時,請將這些值替代為雲端環境特定的值。
在 Oracle Linux 上使用 Podman 設定 User Lingering
簡介
Systemd 提供使用者語言,讓使用者服務 (例如以 systemd 使用者單位啟動的容器) 在使用者登出後保持作用中狀態。若未這麼做,使用者服務管理程式 (及其容器) 會在登出時停止。
目標
在本教學課程中,您將學習到:
- 使用 Podman 建立和執行 Pod。
- 使用 Podman 管理 Pod。
- 使用 Podman 移除 Pod。
必要條件
-
最低單一 Oracle Linux 系統
-
每個系統都應安裝並設定 Oracle Linux,其中包含:
- 具有 sudo 存取權的非 root 使用者帳戶
- 存取 Internet。
部署 Oracle Linux
注意:如果是在您自己的租用戶中執行,請先閱讀 linux-virt-labs GitHub 專案 README.md 並完成先決條件,再部署實驗環境環境。
-
在 Luna Desktop 上開啟終端機。
-
複製
linux-virt-labsGitHub 專案。git clone https://github.com/oracle-devrel/linux-virt-labs.git -
變更至工作目錄。
cd linux-virt-labs/ol -
安裝必要的集合。
ansible-galaxy collection install -r requirements.yml -
部署實驗環境環境。
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e use_podman=true -e update_all=true -e os_version="9"自由實驗環境環境需要額外的變數
local_python_interpreter,此變數會設定在 localhost 上執行的播放ansible_python_interpreter。由於環境會安裝 Oracle Cloud Infrastructure SDK for Python 的 RPM 套件 (位於 python3.6 模組底下),因此需要此變數。預設部署資源配置使用 AMD CPU 和 Oracle Linux 8。若要使用 Intel CPU 或 Oracle Linux 9,請在部署命令中新增
-e instance_shape="VM.Standard3.Flex"或-e os_version="9"。重要事項: 請等待播放手冊順利執行,然後到達暫停工作。在手冊的這個階段,Oracle Linux 的安裝已完成,實例已就緒。記下先前的播放,此播放會列印其部署節點的公用和專用 IP 位址,以及執行實驗室時所需的任何其他部署資訊。
確認 Podman 工作
Oracle Linux 中的容器工具套裝程式提供 Podman、Buildah、Skopeo 以及相關相依性的最新版本。
-
開啟終端機,並透過 SSH 連線至 ol-node-01 執行處理。
ssh oracle@<ip_address_of_instance> -
檢查 Podman 的版本。
podman -v -
確認 Podman CLI 正在運作。
podman run quay.io/podman/hello輸出範例:
[oracle@ol-server ~]$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob f82b04e85914 done Copying config dbd85e09a1 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - \ / (O) (O) \ ~~~| -=(,Y,)=- | .---. /` \ |~~ ~/ o o \~~~~.----. ~~ | =(X)= |~ / (O (O) \ ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io
啟用使用者的語言
此教學課程的使用者名稱是 oracle。
-
啟用
oracle使用者的 lingering。sudo loginctl enable-linger oracle
建立 Podman 的 Systemd 單位檔案
-
為 systemd 單元檔案建立目錄。
mkdir -p ~/.config/systemd/user -
建立 Systemd 單位檔案。
cat << EOF | tee ~/.config/systemd/user/mycontainer.service > /dev/null [Unit] Description=My Podman Container [Service] Restart=always ExecStart=/usr/bin/podman run --rm --name mycontainer ghcr.io/oracle/oraclelinux9-nginx:1.20 ExecStop=/usr/bin/podman stop -t 10 mycontainer [Install] WantedBy=default.target EOF -
啟動與啟用 Systemd 服務。
systemctl --user daemon-reload systemctl --user enable --now mycontainer.service
確認系統啟動的 Podman
-
確認服務已啟動 Podman。
podman ps輸出範例:
[oracle@ol-node-01 ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9ada6b5a635f ghcr.io/oracle/oraclelinux9-nginx:1.20 nginx -g daemon o... 4 minutes ago Up 4 minutes 80/tcp, 443/tcp mycontainer -
檢查系統服務的狀態。
systemctl --user status mycontainer.service輸出範例:
[oracle@ol-node-01 ~]$ systemctl --user status mycontainer.service ● mycontainer.service - My Podman Container Loaded: loaded (/home/oracle/.config/systemd/user/mycontainer.service; enabled; preset: disabled) Active: active (running) since Wed 2025-09-03 15:18:52 GMT; 1min 4s ago Main PID: 42554 (podman) Tasks: 22 (limit: 201624) Memory: 367.0M CPU: 7.432s CGroup: /user.slice/user-1001.slice/user@1001.service/app.slice/mycontainer.service ├─42554 /usr/bin/podman run --rm --name mycontainer ghcr.io/oracle/oraclelinux9-nginx:1.20 ├─42562 /usr/bin/podman run --rm --name mycontainer ghcr.io/oracle/oraclelinux9-nginx:1.20 ├─42567 catatonit -P ├─42631 /usr/bin/pasta --config-net --dns-forward 169.254.1.1 -t none -u none -T none -U none --no-map-gw --quiet --net> └─42634 /usr/bin/conmon --api-version 1 -c 9ada6b5a635f05242af94d921c045355a02ff1c5c6843b9b77d4797e6cc48947 -u 9ada6b5a> Sep 03 15:18:53 ol-node-01 podman[42562]: Getting image source signatures Sep 03 15:18:53 ol-node-01 podman[42562]: Copying blob sha256:dc9d5c72c83dcb74035f5659842a5bbdb9ceaaab724e942d1fafba3d9a66583d Sep 03 15:18:53 ol-node-01 podman[42562]: Copying blob sha256:768ce871c381eaff86a716a68d16a5fe365a62f4d44ae38e9e8b1ed8fd5bf4bd Sep 03 15:18:57 ol-node-01 podman[42562]: Copying config sha256:86da1899be3dbf9500534c241500247aa0467c76ebbeb2431e42433dcf3e4df2 Sep 03 15:18:57 ol-node-01 podman[42562]: Writing manifest to image destination Sep 03 15:18:58 ol-node-01 podman[42562]: 2025-09-03 15:18:58.037335665 +0000 GMT m=+5.552269770 container create 9ada6b5a635f05242a> Sep 03 15:18:58 ol-node-01 podman[42562]: 2025-09-03 15:18:58.025938165 +0000 GMT m=+5.540872270 image pull 86da1899be3dbf9500534c24> Sep 03 15:18:58 ol-node-01 podman[42562]: 2025-09-03 15:18:58.150895821 +0000 GMT m=+5.665829926 container init 9ada6b5a635f05242af9> Sep 03 15:18:58 ol-node-01 podman[42562]: 2025-09-03 15:18:58.156268852 +0000 GMT m=+5.671202956 container start 9ada6b5a635f05242af>這會確認 systemd 已在 Podman 中啟動 Nginx 容器。但是,如果登出,它是否仍然有效?
-
輸入
Ctrl-C以結束狀態輸出。
確認服務在登出後仍為作用中狀態
接下來,您將結束目前的階段作業,然後重新連線,以確認 Podman 服務維持作用中。
-
輸入
exit以離開目前的階段作業。 -
使用您最初用來連線的相同連線字串,透過 SSH 重新連線至 ol-node-01 執行處理。
ssh oracle@<ip_address_of_instance> -
確認 Podman 服務為靜態作用中。
podman ps -
檢查系統服務的狀態。
systemctl --user status mycontainer.service
接下來的步驟
此教學課程示範如何使用 Podman 設定使用者嶺。啟用 lingering 可讓 Podman 容器在 Oracle Linux 上以使用者服務的形式持續執行,即使在您登出後也一樣。此方法符合無根容器管理的現代化最佳做法。查看 Oracle Linux 訓練站,瞭解其他教學課程和內容。
相關連結
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Configure User Lingering with Podman on Oracle Linux.
G44257-01