すべてのdocker run
コマンド、またはすべてRUN
Dockerfile内のコマンドがコンテナーを作成します。コンテナがもう実行されていない場合でも、で確認できdocker ps -a
ます。
実行されていないコンテナの膨大なリストを心配する必要がありますか?発行する必要がありますdocker rm
実行されていないコンテナするますか?
これらの実行されていないコンテナがどのようなパフォーマンスまたはメモリ/ストレージのペナルティを被るかはわかりません。
すべてのdocker run
コマンド、またはすべてRUN
Dockerfile内のコマンドがコンテナーを作成します。コンテナがもう実行されていない場合でも、で確認できdocker ps -a
ます。
実行されていないコンテナの膨大なリストを心配する必要がありますか?発行する必要がありますdocker rm
実行されていないコンテナするますか?
これらの実行されていないコンテナがどのようなパフォーマンスまたはメモリ/ストレージのペナルティを被るかはわかりません。
回答:
実行されていないコンテナは、ディスク領域以外のシステムリソースを使用していません。
通常は自分でクリーンアップすることをお勧めしますが、周りにたくさん座っている場合でも、パフォーマンスが低下することはありません。
多数の停止コンテナでdockerコマンドを実行しているときに速度が低下していることに気付いた場合、それはdockerのバグである可能性があるため、バグを送信する必要があります。
RUN
コマンドのドキュメントは次の場所に移動しました:docs.docker.io/en/latest/reference/builder/#run
の docker run
ドキュメントは自動的にコンテナをクリーンアップしたときに、コンテナが終了ファイルシステムを削除する方法について説明します。
--rm=false: Automatically remove the container when it exits (incompatible with -d)
上記は、デフォルトではコンテナーが削除されないが、追加することを示しています --rm=true
または--rm
。
sudo docker run -i -t --rm ubuntu /bin/bash
コンテナを終了すると、コンテナは自動的に削除されます。
これをテストするには、1つのターミナルウィンドウにDockerコンテナーをリストします。
watch -n1 'sudo ls -c /var/lib/docker/containers'
次に、別のウィンドウでこのコマンドを実行して、最大10秒間スリープした後にすべて自動的に終了する複数のDockerコンテナーを実行します。
for i in {1..10}; do sudo docker run --rm ubuntu /bin/sleep $i & done
-rm
は非推奨であり、いつか削除される予定です--rm
。代わりに使用 してください。
これらの実行されていないコンテナがどのようなパフォーマンスまたはメモリ/ストレージのペナルティを被るかはわかりません。
実行されていないDockerコンテナーが使用しているストレージの量を評価するには、次のコマンドを実行します。
docker ps --size --filter "status=exited"
--size
:合計ファイルサイズを表示します(参考:「docker ps -s」のSIZE列と、「仮想」キーワードの意味#1520を説明してください)。--filter "status=exited"
:停止したコンテナのみをリストします。同様に、次のコマンドを実行できます。docker container ls --filter "status=exited"
コマンドdocker system df
(Docker 1.13.0、January 2017で導入)を使用して、Dockerディスクの使用状況を確認することもできます。例:
username@server:~$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 44 28 114.7GB 84.84GB (73%)
Containers 86 7 62.43GB 41.67GB (66%)
Local Volumes 2 1 0B 0B
Build Cache 0B 0B
docker exec
コマンドは、しばらく前に追加されている、参照docs.docker.com/reference/commandline/cli/#exec -それは実行中のコンテナOFFコマンドを実行します。