2016-09-29 18 views
1

ドッカーが永続ストレージで動作するのか、永続ストレージで動作するのかを制御したいと思います。Docker:オーバーレイされたバッキングファイルシステムを使用できますか?

私はSDカード(ラズベリーパイ)にファイルシステムを持っているので、それは長く続く必要があります。私は主に、tmpfs(その上のコンテナを実行)でオーバーレイされた読み取り専用ファイルシステム(ext4)で操作したいが、更新が利用可能であることを検出すると、overlayfsをアンマウントし、ファイルシステムを読み書きし、すべてをtmpfsオーバーレイされた読み取り専用ファイルシステムに戻します。

# mv /var/lib/docker /var/lib/docker~ 
# mkdir -p /var/lib/docker /tmp/docker /tmp/work 
# mount -t overlay -o lowerdir=/var/lib/docker~,upperdir=/tmp/docker,workdir=/tmp/work overlay /var/lib/docker 
# docker daemon --storage-driver devicemapper 

私は2つのストレージドライバ試み:overlay2 devicemapper(ループ)。前者は、ファイルシステムの基礎となるオーバーレイ上での作業を拒否しました(これは、サポートされていないというドキュメントでも言及されています)。後者はすべてのメモリを消費し、その後DockerはOSによって殺されます。この動作は、Raspberry Piと私のPCで同じです。

動作する唯一のストレージはvfsですが、私が読んだものではストレージ(コピーオンライトなし)は非常に非効率的なので、私にとっては役に立たないものです。

私はaufsストレージドライバとoverlayfsバッキングファイルシステムでそれをやろうとしています(Dockerのドキュメントでは、それが無効であるとは言いません)。私はそれがうまくいくことを願っていますが、いくつかの短所があります:aufsはメインラインのLinuxカーネルではサポートされていません。

2つのファイルシステムを切り替える他の方法はありますか?または、SDカードの保存を完全に異なる方法(たとえば、メモリ内のコンテナを実行中)で行うことはできますか?

答えて

0

編集:申し訳ありません、この最終的には動作しません!。 Dockerデーモンが起動しますが、コンテナを作成できません。を作品 overlayfsバッキングファイルシステムと

Handler for POST /v1.24/containers/create returned error: error creating aufs mount to /var/lib/docker/aufs/mnt c549130a63857658f8675fd84296afae46293a9f7ae54e9ee04e83c231db600f-init: invalid argument 

AUFSストレージドライバ:これはエラーです。今のところそれは唯一の選択肢のようですが、解決策には満足していません。なぜなら、私にとってはハックのように思えるし、aufsはメインラインのカーネルにはないから、自分でカーネルをコンパイルする必要があったからです。私のPC上

  • を::

    $ git clone https://github.com/p4l1ly/rpi-kernel 
    $ cd rpi-kernel 
    $ vagrant up 
    

    ...いくつかは非常に長く待つ

    これは(それはかなりハックだ、より良いそれを行うために私をアドバイスをしてください)私はそれをやった方法です時間...

    $ vagrant ssh 
        $ cp /var/kernel_build/results/kernel-20161003-100112/rpi2_3/kernel7.img /vagrant/ 
        $ exit 
    $ sudo cp kernel7.img /mnt 
    
  • その後、SDカード上:

関連する問題