docker update

読む時間の目安: 2 分

説明

1 つまたは複数コンテナーの設定を更新します。

利用方法

$ docker update [オプション] CONTAINER [CONTAINER...]

追加説明

docker updateコマンドはコンテナー設定を動的に変更します。 このコマンドを使って、コンテナーによる Docker ホストリソースの過度の消費を抑えることができます。 本コマンドの 1 度の実行により、1 つのコンテナーだけでなく複数のコンテナーに対しても設定を行うことができます。 複数コンテナーを対象とする場合は、コンテナー名またはコンテナー ID を空白文字で区切ったリストとして指定します。

--kernel-memoryオプションだけは例外ですが、本コマンドのそれ以外のオプションは、実行中および停止中のコンテナーに対して指定することができます。 カーネルバージョンが 4.6 よりも古い場合、本コマンドは停止しているコンテナーに対してのみ、あるいはカーネルメモリが初期化されている実行中コンテナーに対してのみ、設定変更を行うことができます。

警告

docker updateコマンドとdocker container updateコマンドは Windows コンテナーに対してはサポートされていません。

本コマンドの利用例については、以下に示す 利用例の節 を参照してください。

オプション

名前/省略形 デフォルト 説明
--blkio-weight ブロック I/O。(相対的な重みづけ)、10 から 1000、0 は無効化。(デフォルトは 0)
--cpu-period CPU の CFS(Completely Fair Scheduler)間隔を制限します。
--cpu-quota CPU の CFS(Completely Fair Scheduler)クォータを制限します。
--cpu-rt-period API 1.25 以上
CPU へのリアルタイムアクセス時間をマイクロ秒で制限します。
--cpu-rt-runtime API 1.25 以上
CPU へのリアルタイムアクセスランタイムをマイクロ秒で制限します。
--cpu-shares , -c CPU 配分。(相対的な重みづけ)
--cpus API 1.29 以上
CPU 数。
--cpuset-cpus 利用を許容する CPU 数。(0-3、0,1)
--cpuset-mems 利用を許容するメモリ数。(0-3、0,1)
--kernel-memory カーネルメモリ上限。
--memory , -m メモリ上限。
--memory-reservation メモリのソフトリミット。
--memory-swap メモリとスワップの総量を制限します。'-1' 設定時はスワップ無制限。
--pids-limit API 1.40 以上
コンテナーの PID 制限を調整します。(-1 により無制限)
--restart コンテナー終了時に適用する再起動ポリシー。

利用例

以下の各節では本コマンドの利用方法を示します。

CPU 共有の設定変更

cpu-shares(CPU 共有)値の上限を 512 に制限するため、まずはコンテナー名またはコンテナー ID を確認します。 この値はdocker psからわかります。 コンテナー ID はdocker runコマンドの実行直後にも表示されます。 そして以下のコマンドを実行します。

$ docker update --cpu-shares 512 abebf7571666

CPU 共有およびメモリの設定変更

複数のコンテナーに対して複数リソースに対する設定を更新します。

$ docker update --cpu-shares 512 -m 300M abebf7571666 hopeful_morse

カーネルメモリ制約の設定変更

カーネルメモリ制限は--kernel-memoryオプションを使って設定します。 カーネルバージョンが 4.6 よりも古い場合、--kernel-memoryオプションを用いて起動されたコンテナーである場合に限って、実行中に設定変更を行うことができます。 コンテナーを--kernel-memoryオプション なしに 起動していた場合、カーネルメモリを設定するにはコンテナーを停止させる必要があります。

メモ

--kernel-memoryオプションは Docker 20.10 において廃止決定になりました。

たとえば以下のようなコマンドによってコンテナーを起動しているとします。

$ docker run -dit --name test --kernel-memory 50M ubuntu bash

コンテナー実行中にカーネルメモリを以下のようにして変更します。

$ docker update --kernel-memory 80M test

コンテナー起動時にカーネルメモリを初期化 していない とします。

$ docker run -dit --name test2 --memory 300M ubuntu bash

実行中のコンテナーtest2に対してカーネルメモリを変更しようとしても失敗します。 --kernel-memory設定を行うには、コンテナーを停止させる必要があります。 次にこのコンテナーを起動したときに、新たな設定値が利用されます。

カーネルバージョンが 4.6 以上の場合、上の制約はありません。 つまり--kernel-memoryオプションは、他のオプションと同様に利用することができます。

コンテナーの再起動ポリシーの設定変更

実行中コンテナーに対して、コンテナーの再起動ポリシーを変更することができます。 新たな再起動ポリシーは、docker updateを実行した後、ただちに適用されます。

1 つまたは複数のコンテナーにおける再起動ポリシーを更新するには、以下のようにします。

$ docker update --restart=on-failure:3 abebf7571666 hopeful_morse

コンテナーの起動時に「--rm」フラグを指定していた場合、このコンテナーの再起動ポリシーを更新することはできません。 AutoRemoveRestartPolicyは同時に指定することができません。

上位コマンド

コマンド 説明
docker Docker CLI の基本コマンド