7.2.2. Init Container の作成


initContainers 設定を含む Pod 仕様を作成することで、init コンテナーを作成します。

以下の例は、2 つの init コンテナーを持つ単純な Pod の概要を示しています。最初の初期化コンテナーは、myservice サービスが完了するまで待機します。その後、2 番目のプロセスは mydb サービスの完了を待ちます。両方の初期化コンテナーが完了すると、Pod が起動します。

手順

  1. Init Container の Pod を作成します。

    1. 以下のような YAML ファイルを作成します。

      apiVersion: v1
      kind: Pod
      metadata:
        name: myapp-pod
        labels:
          app: myapp
      spec:
        securityContext:
          runAsNonRoot: true
          seccompProfile:
            type: RuntimeDefault
        containers:
        - name: myapp-container
          image: registry.access.redhat.com/ubi9/ubi:latest
          command: ['sh', '-c', 'echo The app is running! && sleep 3600']
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
        initContainers:
        - name: init-myservice
          image: registry.access.redhat.com/ubi9/ubi:latest
          command: ['sh', '-c', 'until getent hosts myservice; do echo waiting for myservice; sleep 2; done;']
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
        - name: init-mydb
          image: registry.access.redhat.com/ubi9/ubi:latest
          command: ['sh', '-c', 'until getent hosts mydb; do echo waiting for mydb; sleep 2; done;']
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
    2. 以下のコマンドを使用して Pod を作成します。

      $ oc create -f myapp.yaml
    3. 以下のコマンドを使用して、Pod の状態を確認してください。

      $ oc get pods

      出力例

      NAME                          READY     STATUS              RESTARTS   AGE
      myapp-pod                     0/1       Init:0/2            0          5s

      Pod のステータス Init:0/2 は、2 つのサービスを待機していることを示します。

  2. myservice サービスを作成します。

    1. 以下のような YAML ファイルを作成します。

      kind: Service
      apiVersion: v1
      metadata:
        name: myservice
      spec:
        ports:
        - protocol: TCP
          port: 80
          targetPort: 9376
    2. 以下のコマンドを使用して Pod を作成します。

      $ oc create -f myservice.yaml
    3. 以下のコマンドを使用して、Pod の状態を確認してください。

      $ oc get pods

      出力例

      NAME                          READY     STATUS              RESTARTS   AGE
      myapp-pod                     0/1       Init:1/2            0          5s

      Pod のステータス Init:1/2 は、1 つのサービス (この場合は mydb サービス) を待機していることを示します。

  3. mydb サービスを作成します。

    1. 以下のような YAML ファイルを作成します。

      kind: Service
      apiVersion: v1
      metadata:
        name: mydb
      spec:
        ports:
        - protocol: TCP
          port: 80
          targetPort: 9377
    2. 以下のコマンドを使用して Pod を作成します。

      $ oc create -f mydb.yaml
    3. 以下のコマンドを使用して、Pod の状態を確認してください。

      $ oc get pods

      出力例

      NAME                          READY     STATUS              RESTARTS   AGE
      myapp-pod                     1/1       Running             0          2m

      Pod の状態が 実行中になっている 場合、Pod はサービスを待機しておらず、実行中であることを示します。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る