Dockerは、Docker Desktopで同期ファイル共有機能の提供を開始した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Dockerは2024年2月6日(米国時間)、Docker開発環境をさまざまなOS上に構築できる「Docker Desktop」で、同期ファイル共有機能(Synchronized File Shares)を提供開始した。
「同期ファイル共有機能により、高速かつ柔軟なホスト間ファイル共有が実現し、膨大なコードベースを扱う開発者のパフォーマンスが向上する。開発者は2〜10倍高速にファイル操作できるようになる」と、Dockerは述べている。
Dockerは次のような開発者にとって同期ファイル共有機能が最適だとしている。
機能の利用を開始するには、Docker Desktopの[Settings(設定)]から[Resources(リソース)]セクション内の[File sharing(ファイル共有)]タブに移動して有効化する必要がある。
Linuxがファイル(コード、スクリプト、イメージなど)をコンテナで利用できるようにする仕組みとしてバインドマウントがある。docker runコマンドやdocker createコマンドにある-v/--volumeオプションでホストパスを指定した場合(またはComposeのvolumes:にホストパスを指定した場合)に使用される。フォルダが読み取り/書き込みモードでバインドマウントされている場合、コンテナがホスト側のァイルシステムに対して書き込むこともできる。
Docker Engineなど、Linux上でコンテナをネイティブに使用する場合、同機能はLinuxカーネルによって有効化され、パフォーマンスへの影響はない。だが、Docker Desktopのようなクロスプラットフォームソリューションを使用する場合、バインドマウントを有効にするために、ホストシステムとLinux間で追加のファイル共有メカニズムが必要になる。
そうした背景の下、Dockerはこれまで、幾つかの仮想ファイルシステムソリューションを使用してきた。だが、仮想ファイルシステムを利用する場合、パフォーマンスの問題が生じる。プロジェクトに数千(場合によっては数百万)ものファイルが含まれ、数百MBあるいは数GBにもなる場合、開発ツールが使用する負荷の高いシステムコールは、極端に遅くなる可能性があるためだ。
こうしたパフォーマンスの問題を解決するのが、同期ファイル共有機能だ。同期ファイル共有を使用すると、開発者はDocker DesktopのVM内で、ホストファイルシステムの場所のext4(Linuxのファイルシステム)でバックアップキャッシュを作成できる。これらのキャッシュは、Mutagenのファイル同期エンジンを使用してホストファイルシステムと同期される。そのため、ファイルは超低遅延で双方向に反映されるという。
「同期ファイル共有機能のデメリットとして、ファイルをホストと仮想マシンの両方に保存する必要があるため、ストレージの使用量が通常は2倍になることが挙げられる。しかし、ファイルの使用量と時間を比較すると、このデメリットはほとんど問題にならないだろう」と、Dockerは述べている。
Copyright © ITmedia, Inc. All Rights Reserved.