3.9.7. ローカルボリューム使用のブロック
ボリュームのプロビジョニングが Dockerfile の VOLUME
指示または docker run -v <volumename>
コマンドを使用して実行されると、ホストのストレージ領域が使用されます。このストレージを使用すると、予期しない領域不足の問題が生じ、ホストが停止する可能性があります。
OpenShift Container Platform では、独自のイメージを実行しようとするユーザーには、ノードホストのストレージ領域全体が一杯になるリスクがあります。この問題に対する 1 つの解決策として、ユーザーがボリュームを持つイメージを実行できないようにする方法があります。これにより、ユーザーがアクセスできるストレージのみを制限し、クラスター管理者はストレージのクォータを割り当てることができます。
docker-novolume-plugin を使用して、ローカルボリュームが定義されたコンテナーの起動を禁止することにより、この問題を解決することができます。とくに、このプラグインは以下を含む docker run
コマンドをブロックします。
-
--volumes-from
オプション -
VOLUME
が定義されたイメージ -
docker volume
コマンドを使ってプロビジョニングされた既存ボリュームの参照
プラグインはバインドマウントへの参照をブロックしません。
docker-novolume-plugin を有効にするには、各ノードホストで以下の手順を実行します。
docker-novolume-plugin パッケージをインストールします。
$ yum install docker-novolume-plugin
docker-novolume-plugin サービスを有効にし、起動します。
$ systemctl enable docker-novolume-plugin $ systemctl start docker-novolume-plugin
/etc/sysconfig/docker ファイルを編集し、以下を
OPTIONS
一覧に追加します。--authorization-plugin=docker-novolume-plugin
docker サービスを再起動します。
$ systemctl restart docker
このプラグインを有効にした後に、ローカルボリュームが定義されたコンテナーは起動に失敗し、以下のエラーメッセージを表示します。
runContainer: API error (500): authorization denied by plugin docker-novolume-plugin: volumes are not allowed