BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Docker Desktop 4.6 for Mac Boostsによって共有パフォーマンスが向上

Docker Desktop 4.6 for Mac Boostsによって共有パフォーマンスが向上

原文(投稿日:2022/03/17)へのリンク

Docker Desktop 4.6 for Macでは、macOSホストとDocker VM間のファイル同期を高速化する多くの変更が取り入れられている。Dockerによると、新バージョンでは、ファイルの同期にかかる時間が最大98%短縮される場合がある。

コード共有はDocker Desktopがサポートする3つのアプローチの1つで、ローカルファイルシステムの一部をコンテナと共有するためのものである。それは、バインドマウント、名前付きボリューム、直接ファイルコピーである。それぞれに長所と短所があり、それによってさまざまなユースケースにフィットさせることができる。バインドマウントは最も便利なオプションで、コンテナ内から編集する必要があるコードを共有するものである。ただし、バージョン4.6より前のバージョンでは、Dockerは、多くの外部依存関係を使用する非常に大きなリポジトリやプログラムでは、バインドマウントのパフォーマンスが低下することを開発者に警告していた。

最新の依存関係管理では、プロジェクトに10k~100kのファイルを簡単に取り込むことができる(パフォーマンスの低下が直線的に増加する)ことを考慮すると、ホストとコンテナがボリュームを介して同期を維持するため、パフォーマンスが低下する場合があります。

バージョン4.6での変更により、gRPC-FUSEの代わりとなるオプションとしてvirtiofsが採用されており、共有パフォーマンスが大幅に向上する。

virtiofsの目標は、ディレクトリツリーを共有する複数の仮想マシン間でローカルファイルシステムのセマンティクスを提供することです。これは、共有ボリュームが必要な軽量VMやコンテナでの処理で特に有用です。

具体的には、Dockerによると、新バージョンでは、284 MBのデータをMySQLデータベースにインポートしたり、大規模なPHPコードベースに対するcomposer installを実行したり、モノリシックTypeScriptアプリを起動したりするなどの操作にかかる時間が80%~90%短縮される。

前述のように、virtiofsはデフォルトでは有効になっていない。しかし、Docker Desktopの実験的機能として有効にすることができる。virtiofsを使うには、Apple Siliconの場合はmacOS 12.2かそれ以降、Intelの場合はmacOS 12.3かそれ以降が必要となる。

最後に、関心のある開発者は既知のバグに注意する必要がある。それは権限エラーが原因でvirtiofsで実行されているコンテナが失敗する場合があるということである。このバグは、必要に応じてインストールできる実験的なビルドで修正されている。

作者について

この記事に星をつける

おすすめ度
スタイル

BT