DOCKERストレージドライバの概要
挿抜可能なストレージ駆動アーキテクチャ
Dockerのストレージドライバアーキテクチャは挿抜可能で、環境や使用例に適したストレージドライバをDockerに「挿入」するのに便利です.各Dockerストレージドライバは、Linuxファイルシステムまたはボリューム管理システムの上に構築されており、ミラー層およびコンテナ層の管理は、独自の方法で自由に実現することができる.つまり、一部のストレージドライバは、異なるシーンで他のドライバよりもパフォーマンスが向上します.どのドライブが最適かを決めると、Docker daemonが起動する前にDockerにドライブを設定することができます.これにより、ストレージドライブ上でDocker daemonを実行することができ、すべての新しいコンテナがこのドライブを使用して作成されます.次の図は、サポートされているドライバ技術と対応するDockerストレージドライバ名を示しています.
Technology
Storage driver name
OverlayFS
overlay/overlay2
AUFS
aufs
Btrfs
btrfs
Device Mapper
devicemapper
VFS
vfs
ZFS
zfs
現在のdaemonでどのストレージドライバが使用されているかはdocker infoコマンドで確認できます.$ docker infoContainers: 0 Running: 0 Paused: 0 Stopped: 0Images: 1Server Version: 1.12.6Storage Driver: overlay2
Backing Filesystem: extfs
... output truncated ...
上記の出力は、Docker daemonがoverlay 2をストレージドライバとして使用し、そのBacking Filesystemがextfsであることを示しています.つまり、私の環境ではoverlay 2ストレージドライバはextファイルシステム上で動作します.バックエンドファイルシステムとは、Docker hostのローカルストレージ領域/var/lib/dockerを作成したファイルシステムのことです.ストレージ・ドライバは、バックエンド・ファイル・システムで実行できますが、サポートされていないバックエンド・ファイル・システムもあります.対応関係は次の表に示されています.
Storage driver
バックエンドファイルシステム
サポートされていないバックエンドファイルシステム
overlay
ext4 xfs
btrfs aufs overlay zfs eCryptfs
overlay2
ext4 xfs
btrfs aufs overlay zfs eCryptfs
aufs
ext4 xfs
btrfs aufs eCryptfs
btrfs
btrfs only
N/A
devicemapper
direct-lvm
N/A
vfs
debugging only
N/A
zfs
zfs only
N/A
ストレージドライバを設定するには、dockerdの起動時に--storage-driver=を追加します.$ dockerd --storage-driver=devicemapper &
$ docker infoContainers: 0Images: 0Storage Driver: devicemapper
Pool Name: docker-252:0-147544-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 1.821 GB
Data Space Total: 107.4 GB
Data Space Available: 3.174 GB
Metadata Space Used: 1.479 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.146 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.90 (2014-09-01)
Execution Driver: native-0.2
ストレージドライバの選択は、コンテナアプリケーションのパフォーマンスに影響を与えるため、適切なドライバを選択するには、ストレージドライバの違いとメリットとデメリットを理解する必要があります.
共有ストレージシステムとストレージドライバ
SANやNASなどの共有ファイルシステムからストレージリソースを取得する企業が多い.通常、これにより、スーパーアセンブリ、レプリカの削除、圧縮などの高度な特性など、パフォーマンスと可用性が向上します.Dockerストレージドライバとデータボリュームは、これらの共有ストレージシステムが提供するストレージ上で実行でき、Dockerはこれらのシステムが提供する優れたパフォーマンスと可用性を利用することができる.
どのストレージドライバを使用しますか?
多くの点でストレージドライバの選択に影響しますが、すべてのユーザーシーンに適したドライバはありません.ストレージドライブは常に向上し、改善されています.また、以下の内容では、いくつかの指導意見を提供することもできます.
あんていせい
Docker環境をより安定させるためには、OSリリース版のデフォルトのストレージドライバを使用することをお勧めします.Dockerをインストールすると、システムに基づいてデフォルトのストレージドライバが選択され、安定性が選択の主な側面です.CS Engine compatibility matrixが指定した構成に従います.CS EngineはDocker Engineの商業化バージョンであり、そのコードはオープンソースのEngineに基づいている.ただし、サポート構成には制限がありますが、このサポート構成では、最も安定した成熟したストレージドライバが使用されます.
経験と専門技能
あなたとあなたのチームが経験したストレージを選択します.例えば、RHELシリーズのOSを使用すると、LVMやDevice Mapperに経験がある可能性があります.そのため、devicemapperストレージドライバを使用する必要があります.Dockerが提供するストレージドライバに経験がなく、簡単に利用できる安定したDocker環境を使用したい場合は、リリース版のデフォルトのDockerストレージドライバを使用することを考慮してください.
将来
OverlayFSはDockerストレージ駆動の未来だと考える人が多い.しかしながら、それはまだ成熟しておらず、aufs、devicemapperに比べて一時的に安定していない.したがって、OverlayFSを使用する場合は注意が必要です.次の図は、すべてのドライバを示し、メリットとデメリットを示しています.ストレージドライバを選択する場合は、以下の内容を参照してください.
Overlay vs Overlay2
OverlayFSには、同じOverlayFSテクノロジーを使用している2つのストレージドライバがありますが、実装が異なり、ディスクの使用にも互換性がありません.互換性がないため、両方の切り替えはすべてのミラーを再作成する必要があります.オーバーレイ駆動は最も原始的なOverlayFSで実現され、Docker 1である.11まではOverlayFSのみのドライバ選択でした.overlay駆動はinode消費に顕著な制限があり、一定の性能を損なう.overlay 2ドライバはこの制限を解決したが、Linux kernel 4.0以上でしか使用できない.
$ docker infoContainers: 0 Running: 0 Paused: 0 Stopped: 0Images: 1Server Version: 1.12.6Storage Driver: overlay2
Backing Filesystem: extfs
... output truncated ...
$ dockerd --storage-driver=devicemapper &
$ docker infoContainers: 0Images: 0Storage Driver: devicemapper
Pool Name: docker-252:0-147544-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 1.821 GB
Data Space Total: 107.4 GB
Data Space Available: 3.174 GB
Metadata Space Used: 1.479 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.146 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.90 (2014-09-01)
Execution Driver: native-0.2
SANやNASなどの共有ファイルシステムからストレージリソースを取得する企業が多い.通常、これにより、スーパーアセンブリ、レプリカの削除、圧縮などの高度な特性など、パフォーマンスと可用性が向上します.Dockerストレージドライバとデータボリュームは、これらの共有ストレージシステムが提供するストレージ上で実行でき、Dockerはこれらのシステムが提供する優れたパフォーマンスと可用性を利用することができる.