Symfony や React などのフレームワークを使用する場合の一般的な開発者ワークフローは、Docker コンテナでアプリ自体を実行しながら、Windows IDE を使用してソースコードを編集することです。 ソースは、次のようなコマンドでホストとコンテナーの間で共有されます。
$ docker run -v C:\Users\me:/code -p 8080:8080 my-symfony-app
これにより、開発者はソースコードを編集し、変更を保存して、すぐにブラウザで結果を確認できます。 ここで、ファイル共有のパフォーマンスが重要になります。
Windows 2.1.7.0 用の Docker Desktop の最新リリース には、Samba の代わりに ユーザースペースのファイルシステム (FUSE) を使用した まったく新しいファイル共有実装 があります。
- キャッシュを使用して(例えば)Symfonyでのページの読み込み時間を最大60%短縮します。
- Linux inotifyイベントをサポートし、ソースコードが変更されたときに自動再コンパイル/リロードをトリガーします。
- Windowsへの認証方法に依存しません:スマートカード、Azure ADはすべて問題ありません。
- VPNが接続されているか切断されているかに関係なく、常に機能します。
- 管理者として実行するコードの量を減らします。
あなたのフィードバックが必要です!
この改善は、 Edge 2.1.7.0リリース で現在利用可能であり、十分な肯定的なフィードバックが得られ次第、後で安定したチャネルにロールアウトされます。 ダウンロードして試してみて、どうなるかをお知らせください。 問題を発見した場合は、 GitHub で報告し、迅速に調査できるように説明と再現手順を記入してください。
大幅なパフォーマンスの改善
パフォーマンスは、アプリケーションのソース コードがホストとコンテナーの間で共有されている場合に不可欠です。 例えば、開発者が Symfony PHP フレームワークを使用し、ソースコードを編集してからブラウザでページをリロードする場合、コンテナ内の Web サーバーはホストに保存されている多くの PHP ファイルを再読み込みする必要があります。 これは速くなければなりません。
以下のグラフはシンプルな symfony デモ のページを3つの設定で読み込むのにかかった時間を示しています:
- 以前のバージョン: これは以前のバージョンの Docker デスクトップでの実装です
- Dockerデスクトップエッジ2.1.7.0:これは新しい(より高速な)実装です
- コンテナー内: ファイルはホストからまったく共有されず、代わりにコンテナーに格納され、将来のパフォーマンスの上限を示します。
左側の 2 本のバーには、古いバージョンの Docker Desktop を使用した待機時間 (秒単位) が表示されます。 2 番目のフェッチは最初のフェッチよりもわずかに優れているだけであり、キャッシュの効果が小さいことを示唆していることに注意してください。
右側の 2 本のバーは、ファイルがまったく共有されていないが、完全に VM 内に格納されている場合の待機時間を示しています。 これは、ボリューム共有システムが完璧でオーバーヘッドがゼロの場合のパフォーマンスの上限です。
中央の 2 つのバーは、ファイルが Docker Desktop Edge 2.1.7.0 の新しいシステムと共有されるときの待機時間を示しています。 最初の(キャッシュされていない)フェッチは、以前のデスクトップバージョンよりもすでに優れていますが、2番目の(キャッシュされた)フェッチは 60%高速です。
その他の機能強化
パフォーマンスが大幅に向上するだけでなく、新しい実装には次の利点があります。
- 新しいバージョンでは、ドライブを共有し、ポート 445 のファイアウォール例外を作成するために管理者権限を使用する必要がないため、 組織全体のセキュリティ ポリシーと競合することはありません 。
- 新しいバージョンでは 、ユーザーがドメイン資格情報を入力する必要はありません。 これは根本的に安全であるだけでなく、ユーザーがパスワードを変更するたびに資格情報を再入力する必要がなくなります。 多くの組織では定期的なパスワード変更が必要であるため、ユーザーは資格情報を頻繁に更新する必要がありました。
- 新しいバージョンでは、スマートカード、AzureAD 、またはその他の方法 を使用して認証するユーザーがサポートされています。 以前は、ユーザー名とパスワードを使用してログインするユーザーのみをサポートできました。
- 新しいバージョンは、 エンタープライズ VPN クライアントおよびエンドポイント セキュリティ ソフトウェア が Hyper-V ネットワーク アダプターと競合することによって引き起こされる問題のクラスの影響を受けません。
FUSEを使用した新しいDockerデスクトップファイル共有の実装を深く掘り下げたフォローアップ投稿にご期待ください。