dockerのストレージドライバ(ファイルシステム)を調べる
はじめに
最近,↓のようにdockerのストレージドライバレベルに近い部分を触ったりしてるのに全く理解してないので何日かにわたって調べていきたいと思います.
ファイルシステムとかめっちゃ詳しいわけじゃないので,間違いとかあるかもしれないです.
dockerコンテナに利用されているファイルシステム
基本的にユニオンマウントという概念を用いたファイルシステムが使われているみたいです.
dockerを触ったことがある人はわかると思いますが,一つのdockerイメージは複数のdockerイメージを組み合わせられていることが多いです.
どのようにしてそれを行っているかというと,一つのマウントポイントに対して垂直に重ね合わせて行っているイメージのようです.
コンテナを実行する際には,イメージの時系列順にリードオンリーで重ね合わせます.その後ライトできる新たなイメージをその上に重ねます.基本的にコンテナ内で作業した内容はライトできる新たなイメージ部分に書き込まれるようです.
ファイルに関しては上の方に存在している情報が優先され,ディレクトリに関しては内容を組み合わせるようになっています.
ストレージデバイスの種類
今現在dockerでは7種類のストレージデバイスがあるみたいです.
今回はここに調べることはしませんが,明日以降調べたりいきたいと思います.
デフォルトで利用されているストレージデバイス
特に意識してなかったのですが,↓の記事の調査してる時にストレージデバイスが判明してました. cut-ter.hatenablog.com
17.09.0-ceではoverlay2が利用されています.
今日のところはこんな感じにします.ストレージデバイスによってはnfsとかも許容できる可能性もあるのでしっかりと調べていきたいと思います.