[et_pb_section fb_built=”1″ _builder_version=”4.14.9″ custom_margin=”0px||||false|false” custom_padding=”0px||||false|false” global_colors_info=”{}” theme_builder_area=”post_content”][et_pb_row _builder_version=”4.14.9″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” custom_margin=”0px||||false|false” custom_padding=”0px||||false|false” global_colors_info=”{}” theme_builder_area=”post_content”][et_pb_column type=”4_4″ _builder_version=”3.25″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||” theme_builder_area=”post_content”][et_pb_text admin_label=”Top Content” _builder_version=”4.14.9″ _module_preset=”834795bf-5b8e-4a43-a428-708342e15d90″ header_2_font=”|700|||||||” header_2_font_size=”36px” hover_enabled=”0″ global_colors_info=”{}” theme_builder_area=”post_content” sticky_enabled=”0″]
美徳の紹介
Mac 用 Docker Desktop の 4.6 リリースには、macOS ユーザーのファイル共有パフォーマンスを大幅に向上させる多くの変更が含まれています。 まず、開発者は virtiofs と呼ばれる新しい実験的なファイル共有実装を使用するオプションを利用できるようになりました(現在のデフォルトはgRPC-FUSEです)。 次に、macOS ホストと Docker VM の間でファイルを同期する方法が改善されました。 素晴らしいmacOSユーザーコミュニティでのテスト中に、これらの変更により、ファイルシステム操作を完了するのにかかる時間 が最大98%短縮されたことがわかりました。
開発者にとって、これらの驚異的な速度の向上は、ファイルシステム操作が完了するのを待つ時間(またはパフォーマンスを向上させるためのプロジェクト固有の回避策を構築する時間)を減らし、イノベーションに集中する時間を増やすことを意味します。
一般的な開発者ワークフローを理解する
Symfony や React などのテクノロジーを使用する場合の一般的な開発者ワークフローは、Docker コンテナーでアプリ自体を実行しながら、macOS ホストにあるソースコードを編集することです。 ソース コードは、次のようなコマンドで Docker ボリュームを使用してホストとコンテナーの間で共有されます。
docker run -v /Users/me:/code -p 8080:8080 my-symfony-app
これにより、開発者はソースコードを編集し、変更を保存して、ブラウザで結果をすぐに確認できます。 ホスト システムにあるファイルに加えられた変更は、開発者が生産性を最適化し、優れたユーザー エクスペリエンスを実現するために、コンテナー ファイル システムに迅速かつ確実に反映される必要があります。 これは、ファイル共有のパフォーマンスが絶対に重要である場所です。
大幅なパフォーマンスの改善
パフォーマンスは、アプリケーションのソース コードがホストとコンテナーの間で共有される場合に不可欠です。 例えば、開発者が Symfony PHP フレームワークを使用し、ソースコードを編集してからブラウザでページをリロードする場合、コンテナ内の Web サーバーはホストに保存されている多くの PHP ファイルを再読み込みする必要があります。 最新の依存関係管理が10k〜100kのファイルを簡単にプロジェクトに取り込むことができることを考慮すると(パフォーマンスの低下が直線的に増加します)、ホストとコンテナがボリュームを介して同期を維持するため、パフォーマンスが低下する可能性があります。
virtiofs の使用を含む Docker Desktop for Mac への最近の変更により、この問題が軽減され、ファイル システムのパフォーマンスが大幅に向上します。 具体的には、virtiofsを有効にし、ファイル同期の変更を含むDocker Desktop 4.6の早期プレビューで作業している開発者は、次のことを確認しています。
- 284MBのMySQLインポートを完了するのにかかる時間が90%改善されました(3分16秒から18秒)
- 大規模なコードベース(1分27秒から11秒) で「コンポーザーインストール」を実行する のにかかる時間が87%改善されました
- モノリシックTypescriptアプリの起動にかかる時間が80%改善されました(1分30秒から18秒)
そして、ユーザーから寄せられたコメントの一部を次に示します。
- "これは私のMac mini M1でうまく機能します!、私のlaravelインスタンスで移行を実行することは今や瞬時に...数分間実行する代わりに。" (出典: Githubユーザーフィードバック)
- "私の開発セットアップは今途方もなく速いです。 みんなありがとう!" (出典: Githubユーザーフィードバック)
- "この拡張がリリースされたビルドで着陸するのを楽しみにしています。 まるで夜と昼のようでした!🙌."(出典: Githubユーザーフィードバック)
美徳を有効にする方法
Virtiofs は、次の macOS バージョンのユーザーのみが使用できます。
- macOS 12.2 以降 (Apple シリコン用)
- macOS 12.3 以降 (インテル向け)
Docker デスクトップで virtiofs を有効にするには :
- Docker デスクトップ バージョン 4.6 を使用していることを確認します ( こちらから入手できます)。
- 「設定」(歯車アイコン)>「実験的機能」に移動します
- [新しい仮想化フレームワークを使用する] と [VirtioFS 高速ディレクトリ共有を有効にする] トグルを選択します
- [適用と再起動]をクリックします

あなたのフィードバックが必要です!
Virtiofsは現在、Docker Desktop for Mac(バージョン4.6)内でアクセスでき、Docker Personalの無料ユーザーだけでなく、 Docker Pro、Team、Businessの有料 サブスクリプションユーザーを含むすべてのユーザーが利用できます。
ダウンロードして試してみて、どうなるかをお知らせください。 問題を発見した場合は、公開ロードマップの Macファイルシステムパフォーマンススレッド で報告してください。 現時点では、virtiofs で実行されているコンテナーがアクセス許可エラーのために失敗する可能性がある未解決の問題を認識しています。 Macファイルシステムのパフォーマンススレッド への実験的なデスクトップビルドでこれに対する修正をリリースし、数日中にその安定性を確認します。
同様に、私たちは常に、美徳をテストするために使用できるパフォーマンスベンチマークを聞くことに興味を持っています!
[/et_pb_text][et_pb_button button_url=”@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF9saW5rX3VybF9wYWdlIiwic2V0dGluZ3MiOnsicG9zdF9pZCI6IjI5MDI4In19@” button_text=”Download” _builder_version=”4.14.9″ _dynamic_attributes=”button_url” _module_preset=”default” global_colors_info=”{}” theme_builder_area=”post_content”][/et_pb_button][et_pb_text admin_label=”Bottom Content” _builder_version=”4.14.9″ hover_enabled=”0″ global_colors_info=”{}” theme_builder_area=”post_content” _module_preset=”834795bf-5b8e-4a43-a428-708342e15d90″ sticky_enabled=”0″]
macOSコミュニティに感謝します
素晴らしいフィードバックを提供し、機能を非常に厳密にテストしてくれたユーザーのmacOSコミュニティに心から感謝します。 特に、 Konstantinos Tsanaktsidis によって行われたファイルシステムのパフォーマンスの優れた分析は、ファイル同期に関する貴重な洞察につながりました。
[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]