2015-12-10 5 views
5

マイストーリー私は、メディアファイルの数千人を処理するためにPHPのlaravelキューからDockerを呼んでいたワンス・アポン・ア・タイムDockerの数が多すぎると、Dockerの破損を避けるにはどうすればよいですか?

。私のコードは、完了したいそれぞれのタスク(例えば、「処理」、「検索」、「スライス」など)ごとに新しいコンテナを作成します。それから私は寝て災害に遭った。私は、1TBのログファイルと、さまざまな州の数十万のコンテナまで目を覚ましました。

ドッカーはもう動作しません。で、私がdocker version(またはそれについてはdocker anything)と入力すると、それはそこに座っているだけです。私は再インストールを避けたいですが、Dockerが非常に落ち込んでいるので、標準docker rm $(docker ps -a -q)でコンテナを取り除くことはできません。ドッキングウィンドウデーモンが応答しない場合

私の質問

  1. はどのようにドッキングウィンドウコンテナを削除することができますか?

  2. 私のコードは、Docker APIを使用して栄誉ある実行可能ファイルとしてDockerを使用しています。今後、自分自身でコードをクリーンアップするために必要な特別な手順はありますか?

  3. 一般的に、私は、同時に多くの(つまり20個の)コンテナをスピンアップしようとすると、Dockerがタイムアウトする可能性が高いことに気付きました。私はそのダイヤルを上げることができるのが大好きです。

いくつかの情報

ここで私は現在、デーモンを呼んでいる方法は次のとおりです。

$> sudo docker daemon 
INFO[0000] API listen on /var/run/docker.sock 
INFO[0000] [graphdriver] using prior storage driver "aufs" 

(Meanwhile in another terminal) 
$> docker version 
(insert infinite darkness here) 
+0

docker-machineコマンドを使用できますか? –

+0

@ M.Carlson私はもう問題を設定していないので、残念ながらそれをチェックすることはできませんが、最終的にはドッカーデーモンとやりとりしていたものがハングします。 – slifty

答えて

0

私はいくつかの掘削をしました。

ドッカーデーモンが応答しない場合、どのようにドッキングコンテナを削除できますか?

Ubuntuでは、コンテナは/var/lib/docker/containersディレクトリに格納されます。そのディレクトリの内容を削除すれば、物事ははるかに良くなります。これは、システムとインストール構成に応じて、他の場所にも存在します。

また、好奇心が強い人にとっては、取り除かれなければならない約250kの容器がありました。私が行かなければならなかったファイルの数が無制限であることを考えると:ls /var/lib/docker/containers | xargs -n200 rm -rf < - 何をしているのか分からなければ、あなたのコマンドラインに入力しないでください。

私はDockerを、APIを使用してコードから呼び出されてglorified実行可能ファイルとして使用しています。今後、自分自身でコードをクリーンアップするために必要な特別な手順はありますか?

コンテナを再度使用しない場合は、完了後に正式に「削除」する必要があります。コマンドラインでは、これはdocker rm $(containername)を使用して行われ、コードではドッカーのアクセス方法に完全に依存します。閉鎖後にクリーンアップするdocker run --rmを使ってドッカーを走らせることができると聞きました。

私は、プログラムで削除しようとしても、コンテナが閉じない場合があることを発見しました。私は定期的にdocker ps -a | awk '{print $1}' | xargs docker rm

私は同時に、あまりにも多くの(すなわち20)コンテナをスピンアップしようとすると、ドッカーがタイムアウトになりやすいことに気づいただろうにcronを設定することを防ぐために。

これは私が物事をクリアすると停止しましたが、私はまだこの使用例のためにDocker Swarmのようなものを使用する必要があると思います。私の場合は、単に複数のスレッドを使用していたドッキングステーションの必要性を排除するために、運用環境を設定することにしました。

関連する問題