2013-06-09 8 views
115

すべてdocker runコマンド、またはDockerfile内のすべてのRUNコマンドはコンテナを作成します。コンテナがもはや実行されていない場合は、docker ps -aと表示されます。余計な稼動していないDockerコンテナについて心配すべきでしょうか?

非稼動コンテナの膨大なリストが必要なのはどうですか?非稼働のコンテナにdocker rmを発行する必要がありますか?

これらの非稼働中のコンテナで発生するパフォーマンスまたはメモリ/ストレージのペナルティは不明です。

+1

もう少し前に 'docker exec'コマンドが追加されました。https://docs.docker.com/reference/commandline/cli/#execを参照してください - 実行中のコンテナからコマンドを実行します。 – schmunk

+0

参考までに、古いコンテナを削除する方法については、この質問をご覧ください。http://stackoverflow.com/questions/17236796/how-to-remove-old-docker-containers/29474367 –

+1

@schmunkリンクが移動しました。 https://docs.docker.com/engine/reference/commandline/exec/ – akauppi

答えて

56

実行されていないコンテナは、ディスク領域以外のシステムリソースを使用していません。

通常、あなた自身の後でクリーンアップするのが良いですが、周りにたくさん座っているとパフォーマンスが低下することはありません。

停止したコンテナがたくさんあるドッカーコマンドを実行すると速度が低下する場合は、ドッカーのバグかもしれないので、バグを提出する必要があります。

+1

'RUN'コマンドのドキュメントはhttp://docs.docker.io/en/latest/reference/builder/に移動しました。 #run – aculich

59

docker run documentationが自動的にコンテナをクリーンアップしたときに、コンテナが終了ファイルシステムを削除する方法について説明します。

--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つのターミナルウィンドウにドッキングウィンドウのコンテナをリストすることによってこれをテストすることができます

watch -n1 'sudo ls -c /var/lib/docker/containers' 

そして、別のウィンドウで複数のドッキングウィンドウコンテナを実行するには、このコマンドを実行してその意志すべて自動的に終了し、最大10秒間スリープした後。

for i in {1..10}; do sudo docker run --rm ubuntu /bin/sleep $i & done 
+3

*質問*への直接的な回答ではありませんが、ユーザーにドッカーの仕組みについてのいくつかの洞察を与える興味深い答えです。ありがとう! – thaJeztah

+3

'-rm'は廃止され、しばらくして削除されます。代わりに' --rm'を使用してください。 – bain

+1

"-rm'"はすでに削除されています – Vanuan

5

ボリュームとコンテナを実行し、コンテナを削除した後、ボリュームが削除されていないし、それを削除するにはドッキングウィンドウは、rm -vを使用しない場合。また、vfsストレージドライバを持つissueもあります。きれいにすることを忘れた場合、ボリュームはディスク容量を使い果たします。

関連する問題