1

elasticsearch仮想マシンで docker コンテナーを実行していますが、最近elasticsearch障害が発生し、コンテナーが停止しました。理由 - SSD の容量が不足しています。

インデックスを簡単にクリーンアップできますが、ここでの本当の問題は、docker を実際に起動してそれを行うことができないことです。コンテナーは、Web UI または bash を介してスペースをクリーンアップする機能なしで、開始直後に停止します。

開始できなかった停止中のコンテナー内のディスクをクリーンアップするにはどうすればよいですか?

4

1 に答える 1

3

公式elasticsearchイメージを使用していると仮定すると、Elasticsearch データ ディレクトリはボリュームになります (VOLUME /usr/share/elasticsearch/dataそのイメージのステートメントに注意してくださいDockerfile)。

別のコンテナを開始し、オプションを使用して元のコンテナのボリュームをマウントし、--volumes-from必要と思われるクリーンアップ タスクを実行できます。

docker run --rm -it \
    --volumes-from=<original-elasticsearch-container> \
    ubuntu:latest \
    /bin/bash

それが失敗した場合はdocker inspect、Elasticsearch コンテナーで実行して、ホスト ファイルシステムでボリュームのディレクトリを見つけることもできます (デフォルトのlocalボリューム ドライバーを使用していると仮定します)。MountsJSON 出力で次のセクションを探します。

"Mounts": [
    {
        "Name": "<volume-id>",
        "Source": "/var/lib/docker/volumes/<volume-id>/_data",
        "Destination": "/usr/share/elasticsearch/data",
        "Driver": "local",
        "Mode": "",
        "RW": true,
        "Propagation": ""
    }
],

プロパティは、"Source"ホスト ファイル システム上のボリュームの場所を示します。コンテナが開始されると、このディレクトリはコンテナのマウント名前空間に単純にバインドマウントされます。ホスト上のこのディレクトリで行った変更は、コンテナーの開始時にコンテナーに反映されます。

于 2016-12-14T19:49:42.460 に答える