ノート:

Oracle LinuxでのPodmanでのユーザー・リンガリングの構成

イントロダクション

Systemdはユーザー・リンガリングを提供し、ユーザー・サービス(systemdユーザー・ユニットで起動されたコンテナなど)は、ユーザーのログアウト後にアクティブのままになります。これがないと、ユーザー・サービス・マネージャ(およびそのコンテナ)はログアウト時に停止します。

目的

このチュートリアルでは、次のことを学習します。

前提条件

Oracle Linuxのデプロイ

ノート:独自のテナンシで実行している場合は、演習環境をデプロイする前に、linux-virt-labs GitHubプロジェクトREADME.mdを読み、前提条件を完了してください。

  1. Lunaデスクトップでターミナルを開きます。

  2. linux-virt-labs GitHubプロジェクトをクローニングします。

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. 作業ディレクトリに変更する。

    cd linux-virt-labs/ol
    
  4. 必要なコレクションをインストールします。

    ansible-galaxy collection install -r requirements.yml
    
  5. 演習環境をデプロイします。

    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"
    

    無料の演習環境には、ローカル・ホストで実行される再生のansible_python_interpreterを設定する追加の変数local_python_interpreterが必要です。この変数は、python3.6モジュールの下にあるOracle Cloud Infrastructure SDK for PythonのRPMパッケージが環境によってインストールされるため必要です。

    デフォルトのデプロイメント・シェイプでは、AMD CPUおよびOracle Linux 8が使用されます。Intel CPUまたはOracle Linux 9を使用するには、デプロイメント・コマンドに-e instance_shape="VM.Standard3.Flex"または-e os_version="9"を追加します。

    重要:プレイブックが正常に実行されるまで待機し、一時停止タスクに到達します。プレイブックのこの段階では、Oracle Linuxのインストールが完了し、インスタンスの準備ができました。前回の再生をノートにとります。この再生では、デプロイするノードのパブリックIPアドレスとプライベートIPアドレス、および演習の実行中に必要なその他のデプロイメント情報が出力されます。

Podmanの動作を確認する

Oracle Linuxのcontainer-toolsパッケージは、Podman、Buildah、Skopeoおよび関連する依存関係の最新バージョンを提供します。

  1. 端末を開き、SSH経由でol-node-01インスタンスに接続します。

    ssh oracle@<ip_address_of_instance>
    
  2. Podmanのバージョンを確認します。

    podman -v
    
  3. 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です。

  1. oracleユーザーの言語を有効にします。

    sudo loginctl enable-linger oracle
    

Podman用のSystemdユニット・ファイルの作成

  1. systemdユニット・ファイルのディレクトリを作成します。

    mkdir -p ~/.config/systemd/user
    
  2. 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
    
  3. Systemdサービスを起動して有効にします。

    systemctl --user daemon-reload
    systemctl --user enable --now mycontainer.service
    

Systemdが開始したPodmanの確認

  1. サービスが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
    
  2. systemdサービスのステータスを確認します。

    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コンテナを起動したことが確認されます。ただし、ログアウトしてもアクティブなままですか。

  3. Ctrl-Cと入力してステータス出力を終了します。

ログアウト後にサービスがアクティブのままであることの確認

次に、現在のセッションを終了し、再接続してPodmanサービスがアクティブなままであることを確認します。

  1. 現在のセッションを終了するには、exitと入力します。

  2. 最初に接続するために使用したものと同じ接続文字列を使用して、SSH経由でol-node-01インスタンスに再接続します。

    ssh oracle@<ip_address_of_instance>
    
  3. Podmanサービスがアクティブであることを確認します。

    podman ps
    
  4. systemdサービスのステータスを確認します。

    systemctl --user status mycontainer.service
    

次のステップ

このチュートリアルでは、Podmanでユーザー・リンガリングを構成する方法を示します。リンガリングを有効にすると、ログアウトした後でも、PodmanコンテナをOracle Linuxのユーザー・サービスとして継続的に実行できます。このアプローチは、ルートレス・コンテナ管理の最新のベストプラクティスに準拠しています。追加のチュートリアルおよびコンテンツについては、Oracle Linuxトレーニング・ステーションを参照してください。

その他の学習リソース

docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。