2015-10-08 20 views
11

一般的なシナリオは、サーバーのクラスタがあり、Dockerを使用して仮想クラスタを設定することです。私たちはさまざまなサービスのためDockerfilesを作成していることについてはコンテナに使用できるDockerファイルシステムの容量を制限する方法

(Hadoopの、などをスパーク)。 HadoopのHDFSサービスについて

は、しかし、我々は、ドッキングウィンドウのコンテナに使用可能なディスク領域がサーバーで使用可能なディスク容量に等しいという状況があります。コンテナごとに使用可能なディスクスペースを制限し、HDFSファイルシステムに貢献するために、いくつかのストレージサイズを持つ追加のデータノードを動的に生成することができます。

私たちはext4のでフォーマットループバックファイルを使用して、我々はドッキングウィンドウコンテナにボリュームとして使用したディレクトリにこれらをマウントする考えを持っていました。しかし、これは大きなパフォーマンス低下を意味します。

私はSO(Limit disk size and bandwidth of a Docker container)についてもう1つの質問を見つけましたが、答えはドッカーの開発のスピードに関して古くからある、およそ1.5歳です。道やストレージバックエンドは、私たちコンテナごとに制限ストレージ

  • が近いベアメタル性能を有する
    • には、サーバの再パーティションが
    • を駆動する必要はありませんできるようになる

  • 答えて

    22

    あなたは、メモリとCPUではなく、ディスクスペースにruntime constraintsを指定することができます。

    ディスクスペースに制約を設定する機能が必要です(issue 12462issue 3804)が、基本的なファイルシステムドライバに依存するため、まだ実装されていません。

    この機能はある時点で追加されますが、すぐには追加されません。コードの大部分がある場所から別の場所に移動しているので、今はこの機能を追加するのが少し難しいです。この作業が完了したら、この機能を実装する方がはるかに簡単です。

    クォータサポートは、devicemapperのハックとして追加することはできません。できるだけ多くのストレージバックエンドに実装する必要があるため、追加するのが簡単な方法で実装する必要があります他のストレージバックエンドのクォータサポート


    アップデート2016年8月:以下に示し、そしてissue 3804 commentPR 24771PR 24807で、その後マージされて見てきたように。 docker runは現在、作成時に120Gにコンテナrootfsのサイズを設定することができます

    この(サイズ)

    $ docker run -it --storage-opt size=120G fedora /bin/bash 
    
    コンテナ

    あたりのストレージドライバオプションを設定することができます。
    このオプションは、完全な、それはやるん何今、これを有効にするオプションがあるので、のbtrfs、overlay2、windowsfilterとZFSグラフドライバ

    +0

    、devicemapperためにのみ使用可能ですか?私はちょうど巨大なファイルを作成しようとしましたが、一度いっぱいになるとコンテナは何もできなくなり(lsも)、 'docker rm myimg'はまったく動作しません。 – Telokis

    +0

    @Ninetainedo Strange。どんなOSでどのドッカーのバージョンを使用していますか? – VonC

    +0

    Github、[here](https://github.com/docker/docker/issues/31931)を見ても大丈夫ですか? – Telokis

    関連する問題