第27章 ボリュームの管理


27.1. 概要

コンテナーはデフォルトで永続性がある訳ではありません。再起動時にそれらのコンテンツはクリアされます。ボリュームとは Pod およびコンテナーで利用可能なマウントされたファイルシステムのことであり、これらは数多くのホストのローカルまたはネットワーク割り当てストレージのエンドポイントでサポートされる場合があります。

ボリュームのファイルシステムにエラーが含まれないようにし、かつエラーが存在する場合はそれを修復するために、OpenShift Container Platform は mount ユーティリティーの前に fsck ユーティリティーを起動します。これはボリュームを追加するか、または既存ボリュームを更新する際に実行されます。

最も単純なボリュームタイプは emptyDir です。これは、単一マシンの一時的なディレクトリーです。管理者はユーザーによる Pod に自動的に割り当てられる 永続ボリューム の要求を許可することもできます。

注記

emptyDir ボリュームストレージは、FSGroup パラメーターがクラスター管理者によって有効にされている場合は Pod の FSGroup に基づいてクォータで制限できます。

CLI コマンドの oc volume を使用し、「レプリケーションコントローラー」「デプロイメント設定」などの Pod テンプレートを持つオブジェクトのボリュームおよびボリュームマウントを「追加」「更新」、または「削除」できます。また、Pod テンプレートのある Pod またはオブジェクトのボリュームを「一覧表示」することもできます。

27.2. 一般的な CLI の使用方法

oc volume コマンドは以下の一般的な構文を使用します。

$ oc volume <object_selection> <operation> <mandatory_parameters> <optional_parameters>
Copy to Clipboard Toggle word wrap

このトピックでは、<object_selection><object_type>/<name> 形式を後に説明する例で使用しています。ただし、以下のオプションのいずれかを使用できます。

Expand
表27.1 オブジェクトの選択
構文説明

<object_type> <name>

タイプ <object_type><name> を選択します。

deploymentConfig registry

<object_type>/<name>

タイプ <object_type><name> を選択します。

deploymentConfig/registry

<object_type> --selector=<object_label_selector>

所定のラベルセレクターに一致するタイプ <object_type> のリソースを選択します。

deploymentConfig --selector="name=registry"

<object_type> --all

タイプ <object_type> のすべてのリソースを選択します。

deploymentConfig --all

-f または --filename=<file_name>

リソースを編集するために使用するファイル名、ディレクトリー、または URL です。

-f registry-deployment-config.json

<operation> には、--add--remove、または --list のいずれかを使用できます。

いずれの <mandatory_parameters> または <optional_parameters> も選択された操作に固有のものであり、これらについては後のセクションで説明します。

27.3. ボリュームの追加

ボリューム、ボリュームマウントまたはそれらの両方を Pod テンプレートに追加するには、以下を実行します。

$ oc volume <object_type>/<name> --add [options]
Copy to Clipboard Toggle word wrap
Expand
表27.2 ボリュームを追加するためのサポートされるオプション
オプション説明デフォルト

--name

ボリュームの名前。

指定がない場合は、自動的に生成されます。

-t, --type

ボリュームソースの名前。サポートされる値は emptyDirhostPathsecretconfigmappersistentVolumeClaim または projected です。

emptyDir

-c, --containers

名前でコンテナーを選択します。すべての文字に一致するワイルドカード '*' を取ることもできます。

'*'

-m, --mount-path

選択されたコンテナー内のマウントパス。

 

--path

ホストパス。--type=hostPath の必須パラメーターです。

 

--secret-name

シークレットの名前。--type=secret の必須パラメーターです。

 

--configmap-name

configmap の名前。--type=configmap の必須のパラメーターです。

 

--claim-name

Persistent Volume Claim (永続ボリューム要求、PVC) の名前。--type=persistentVolumeClaim の必須パラメーターです。

 

--source

JSON 文字列としてのボリュームソースの詳細。必要なボリュームソースが --type でサポートされない場合に推奨されます。

 

-o, --output

サーバー上で更新せずに変更したオブジェクトを表示します。サポートされる値は jsonyaml です。

 

--output-version

指定されたバージョンで変更されたオブジェクトを出力します。

api-version

新規ボリュームソース emptyDir をデプロイメント設定の レジストリー に追加します。

$ oc volume dc/registry --add
Copy to Clipboard Toggle word wrap

レプリケーションコントローラー r1 のシークレット $ecret を使用してボリューム v1 を追加し、コンテナー内の /data でマウントします。

$ oc volume rc/r1 --add --name=v1 --type=secret --secret-name='$ecret' --mount-path=/data
Copy to Clipboard Toggle word wrap

要求名 pvc1 を使って既存の永続ボリューム v1 をディスク上のデプロイメント設定 dc.json に追加し、ボリュームをコンテナー c1/data でマウントし、サーバー上でデプロイメント設定を更新します。

$ oc volume -f dc.json --add --name=v1 --type=persistentVolumeClaim \
  --claim-name=pvc1 --mount-path=/data --containers=c1
Copy to Clipboard Toggle word wrap

すべてのレプリケーションコントローラーについてリビジョン 5125c45f9f563 を使い、Git リポジトリー https://github.com/namespace1/project1 に基づいてボリューム v1 を追加します。

$ oc volume rc --all --add --name=v1 \
  --source='{"gitRepo": {
                "repository": "https://github.com/namespace1/project1",
                "revision": "5125c45f9f563"
            }}'
Copy to Clipboard Toggle word wrap

27.4. ボリュームの更新

既存のボリュームまたはボリュームマウントを更新することは、ボリュームの追加と同様ですが、--overwrite オプションを使用します。

$ oc volume <object_type>/<name> --add --overwrite [options]
Copy to Clipboard Toggle word wrap

レプリケーションコントローラーの既存ボリューム r1 を既存の Persistent Volume Claim (永続ボリューム要求、PVC) pvc1 に置き換えます。

$ oc volume rc/r1 --add --overwrite --name=v1 --type=persistentVolumeClaim --claim-name=pvc1
Copy to Clipboard Toggle word wrap

デプロイメント設定 d1 のマウントポイントをボリューム v1/opt に変更します。

$ oc volume dc/d1 --add --overwrite --name=v1 --mount-path=/opt
Copy to Clipboard Toggle word wrap

27.5. ボリュームの削除

Pod テンプレートからボリュームまたはボリュームマウントを削除するには、以下を実行します。

$ oc volume <object_type>/<name> --remove [options]
Copy to Clipboard Toggle word wrap
Expand
表27.3 ボリュームを削除するためにサポートされるオプション
オプション説明デフォルト

--name

ボリュームの名前。

 

-c, --containers

名前でコンテナーを選択します。すべての文字に一致するワイルドカード '*' を取ることもできます。

'*'

--confirm

複数のボリュームを 1 度に削除することを示します。

 

-o, --output

サーバー上で更新せずに変更したオブジェクトを表示します。サポートされる値は jsonyaml です。

 

--output-version

指定されたバージョンで変更されたオブジェクトを出力します。

api-version

デプロイメント設定 d1 からボリューム v1 を削除します。

$ oc volume dc/d1 --remove --name=v1
Copy to Clipboard Toggle word wrap

デプロイメント設定 d1 のコンテナー c1 からボリューム v1 をアンマウントし、d1 のコンテナーで参照されていない場合はボリューム v1 を削除します。

$ oc volume dc/d1 --remove --name=v1 --containers=c1
Copy to Clipboard Toggle word wrap

レプリケーションコントローラー r1 のすべてのボリュームを削除します。

$ oc volume rc/r1 --remove --confirm
Copy to Clipboard Toggle word wrap

27.6. ボリュームの一覧表示

Pod または Pod テンプレートのボリュームまたはボリュームマウントを一覧表示するには、以下を実行します。

$ oc volume <object_type>/<name> --list [options]
Copy to Clipboard Toggle word wrap

ボリュームのサポートされているオプションを一覧表示します。

Expand
オプション説明デフォルト

--name

ボリュームの名前。

 

-c, --containers

名前でコンテナーを選択します。すべての文字に一致するワイルドカード '*' を取ることもできます。

'*'

Pod p1 のすべてのボリュームを一覧表示します。

$ oc volume pod/p1 --list
Copy to Clipboard Toggle word wrap

すべてのデプロイメント設定で定義されるボリューム v1 を一覧表示します。

$ oc volume dc --all --name=v1
Copy to Clipboard Toggle word wrap

27.7. サブパスの指定

volumeMounts.subPath プロパティーを使用し、ボリュームのルートの代わりにボリューム内で subPath を指定します。l>subPath により、単一 Pod で複数の使用目的のために 1 つのボリュームを共有できます。

ボリューム内のファイルの一覧を表示するには、oc rsh コマンドを実行します。

$ oc rsh <pod>
sh-4.2$ ls /path/to/volume/subpath/mount
example_file1 example_file2 example_file3
Copy to Clipboard Toggle word wrap

subPath を指定します。

subPath の使用例

apiVersion: v1
kind: Pod
metadata:
  name: my-site
spec:
    containers:
    - name: mysql
      image: mysql
      volumeMounts:
      - mountPath: /var/lib/mysql
        name: site-data
        subPath: mysql 
1

    - name: php
      image: php
      volumeMounts:
      - mountPath: /var/www/html
        name: site-data
        subPath: html 
2

    volumes:
    - name: site-data
      persistentVolumeClaim:
        claimName: my-site-data
Copy to Clipboard Toggle word wrap

1
データベースは mysql フォルダーに保存されます。
2
HTML コンテンツは html フォルダーに保存されます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat