超高速の開発者イノベーションを実現するための Docker の旅: パフォーマンスのマイルストーンを発表

私たちの旅は目覚ましいものでした。 最近、Dockerは、コンテナオーケストレーションに特化したDocker Swarmから、ソフトウェア開発ライフサイクル(SLDC)の「内部ループ」(基盤)に焦点を移しました。 現在、計画、コーディング、構築の初期段階では、コンテナ開発を成功させるためのステージを設定し、開発チームが自信を持って革新的なコンテナ化されたアプリケーションを迅速かつ一貫して構築できるようにしています。

Docker では、開発からデプロイ、および運用中のソフトウェア管理までのジャーニーが完璧になるように、「内部ループ」を最適化することに専念しています。 ローカルで開発している場合でも、クラウドで開発している場合でも、これらすべてを一流のパフォーマンスとセキュリティで提供するという当社のコミットメントは揺るぎません。

この投稿では、パフォーマンスに焦点を当て、昨年のマイルストーンについて説明します。 堅牢でパフォーマンスが高く、俊敏で安全なコンテナアプリケーション開発プラットフォームを提供するために構築している勢いに興奮しています。

これらの成果は単なる数字ではありません。これらは、私たちがお客様に提供するプラスの影響と投資収益率を示しています。 私たちの仕事は続きますが、これらの改善と、それらがあなたにとって何を意味するのか、つまりイノベーションの背後にある原動力を探りましょう。 

長方形のDockerデスクトップパフォーマンスの更新

起動時のパフォーマンスを最大75%向上 

2022 年、私たちは macOS ユーザーの Docker 体験を変革する旅に乗り出しました。 当時、実験的な仮想化が標準であったため、起動時間は忍耐力が試され、多くの場合30秒を超えました。 これを改善する必要があることはわかっていたので、Mac 仮想化フレームワークのサポートの追加や Docker Desktop Linux VM のブート シーケンスの最適化など、起動時間を大幅に短縮するためにいくつかの調整を行いました。

これで、 Docker Desktop 4.23を起動したら、わずか3.481秒で超高速の起動に備えることができます。 そうです、起動時間は改善されただけでなく、 75%短縮 されました(図1)。

ドッカーパフォーマンスの機能強化f1
図 1: Docker Desktop 4.12 から 4.23 への開発環境全体の起動時間の改善。

祝っているのはMacユーザーだけではありません。 Windows Hyper-V と Windows WSL2 ユーザーには、応援する理由があります。 起動時間は20.257秒(4.12)からわずか10.799秒(4.23)に短縮されました。 この 47% のパフォーマンス向上 により、よりスムーズで効率的な開発エクスペリエンスが提供されます。

そして、スタートアップのパフォーマンスの旅は続きます。 サポートされているすべての開発環境で 3 秒未満の起動時間を実現したいと考えています。 このさらなる進歩をまもなく提供することを楽しみにしており、リリースごとにスタートアップのパフォーマンスが向上し続けることを期待しています。

ネットワークパフォーマンスを85倍高速化

コンテナー イメージのダウンロードとアップロードには時間がかかる場合があります。 Macでは、Docker Desktop 4.23を使用してプロセスを高速化し、30GB/秒(バイト/秒)を超える速度を実現し、迅速な開発ワークフローを確保しました。 これは、Docker Desktopネットワークスタックを、はるかに効率的な新しい最新のバージョンに完全に置き換えることで実現しました。 この変更により、以前のバージョン(4.12)と比較して アップロード速度が85倍向上 しました(図2)。 馬車から新幹線へのアップグレードと考えてください。 これで、データを遅延なくシームレスに移動できます。

コンテナーからホストへのユース ケースは、コンテナーがホストから提供されるサービスにアクセスするときに発生します (たとえば、パッケージがインターネット アクセスを使用してビルドの一部としてインストールされる場合)。
図 2: ホストからコンテナーへのユース ケースは、コンテナー内でホストされているサービスに VM の外部からアクセスする場合 (たとえば、Web 開発者がブラウザーを使用して作業中の Web サイトにアクセスする場合に発生します)。 コンテナーからホストへのユース ケースは、コンテナーがホストから提供されるサービスにアクセスするときに発生します (たとえば、パッケージがインターネット アクセスを使用してビルドの一部としてインストールされる場合)。

Windowsでは、イメージのダウンロードがかつてないほど高速になりました。 Docker Desktop 4.23 では、1.1Gbits/s の速度を実現し、開発者の効率を高めています。 この成果は、以前のバージョン(4.12 )と比較して650%の改善 を表しています。

ビデオゲームや映画に期待されるようなリアルタイムのダウンロード速度については、macOS上のDocker Desktop 4.23はUDPストリーミングの改善を提供し、4.75GB / s(バイト/秒)に急上昇し、以前のバージョン(4.12)と比較して ストリーミング速度が5,800%向上 しました。

これらの数値は、より速く、よりスムーズなデジタルエクスペリエンスに変換され、デジタル世界をアイデアのスピードに保つのに役立ちます。

ホストファイル共有のパフォーマンスを2倍以上最適化 

ファイル共有が常に脚光を浴びているとは限りません。 それでも、それはあなたの開発体験を左右する可能性のある現代の開発の縁の下の力持ちであり、私たちはここでも改善を行いました。

少し前までは、信頼できる Mac ホストで Docker Desktop 4.11 を使用して、コンテナー内 (Redis ソース コードがローカル ホストに存在する場所) から Redis を構築することは、忍耐力を試す試練でした。 貴重な時間の7分25秒が必要でしたが、これは主に、コンテナのホストファイルへのアクセスがイライラする遅延を引き起こしたためです。 

今日、Docker Desktop 4.23で、私たちはゲームに革命をもたらしました。 virtiofs の画期的な改善のおかげで、同じ Redis ビルドにかかる時間はわずか 2 分 6 秒になりました。 これは、 ビルド時間の71%の大幅な短縮です。

macOS 12.5+以降、コンテナとファイルを共有する際のパフォーマンスを大幅に向上させるための標準として、Docker Desktopではvirtiofsがデフォルトになりました(図3)。 詳細については、「Docker Desktop 4.23: Docker Init の更新、新しい構成整合性チェック、クイック検索の改善、パフォーマンスの強化など」を参照してください。

ドッカーパフォーマンスの機能強化f3 v3
図3:Docker Desktop 4.11とvirtiofsを有効にした4.22の比較。

しかし、待ってください、まだまだあります。 すぐにファイル共有の分野でさらに進歩することを期待してください。 シームレスなコラボレーションと開発サイクルの短縮に向けて取り組み続けているのは、節約された分がイノベーションのために得られる分であることを知っているからです。

効率の向上とアイドルメモリ使用量の10倍の削減

効率性とグリーンイノベーションの少しのタッチについて話しましょう。

Docker Desktop 4.22 では、開発環境をスタンバイ状態にして、必要なときにすぐに行動に移し、そうでない場合はリソースを節約するような リソース セーバー モードを導入しました。 リソースセーバーモードは、Mac、Windows、およびLinuxで動作し、Docker Desktopがアイドル状態のときにDocker DesktopのメモリとCPUフットプリントを大幅に削減し(つまり、構成可能な期間コンテナを実行しない)、 ホストマシンのメモリ使用率を2GB削減 することで、MacとWindowsの両方をサポートし、開発者が中断することなくマルチタスクを実行できるようにします(図4)。

ドッカーパフォーマンスの機能強化f4
図4:Docker Desktop 4.20以降のアイドルメモリ使用量の改善。

開発者のマルチタスクを改善する以外に、この機能について他に何がそれほど注目に値しますか? さて、絵を描かせてください。 すべての Docker デスクトップ ユーザーで 毎日 38,500 CPU 時間を節約 しています。 それを概観すると、それは 1,000か月間1,000のアメリカの家庭に電力を供給するのに十分です。

また、Docker Desktopがアクティブである間(つまり、コンテナを実行している間)に大幅な改善を行い、 フットプリントを52.85%削減しました。 これらの機能強化により、Docker Desktop が軽量化され、マシン上のリソースが解放され、他のツールやアプリケーションを効率的に活用できるようになります (図 5)。

ドッカーパフォーマンスの機能強化f5
図5:4.20以降のDockerデスクトップのアクティブなメモリ使用量の改善。

これは、お客様の開発ワークフローを最適化するだけでなく、効率的に行い、エネルギーコストを削減し、環境にプラスの影響を与えることを意味します。 フットプリントの削減は、未来を築くのに役立つと同時に恩返しをする小さな方法の1つであり、Win-Winです。

ビルドプロセスを合理化し、最大40%の圧縮率向上を実現

コンテナがデジタルバックパックであると想像してください。バッグが重いほど、作業中に持ち運ぶのが難しくなります。 Docker Desktop 4.19 では、Docker コンテナー イメージの Zstandard (zstd) 圧縮のサポートを導入して負荷を軽減し、コンテナー イメージのサイズを縮小して目覚ましい結果をもたらしました。 

図 6 の debian:12.1 コンテナイメージのデータを見てください。 Zstandard は、従来の gzip 方式と比較して 圧縮率が ~40% 向上 します。 そしてドッカーエンジンの場合:24.0 画像では、 ~20%の強化を達成しています。

ドッカーパフォーマンスの機能強化f6
図 6: debian:12.1 コンテナイメージと圧縮を改善した Docker Engine 24.0 のデータ。

実際には、コンテナイメージのスリム化と転送の高速化により、より迅速かつ効果的に作業できるようになります。 Docker Desktopを使用すると、バックパックに魔法の圧縮呪文を取り付けて、すべてのバイトをカウントするようなものです。 コンテナが軽くなり、イメージのプルとプッシュが速くなり、開発がスムーズになり、一度に1つの圧縮でジャーニーを最適化します。

エンタープライズレベルのセキュリティ(および安心)

スピードとパフォーマンスについて話すとき、見逃してはならない重要な側面があります:セキュリティ。 Dockerでは、セキュリティのない速度はコンパスのない船のようなものであり、速く動くかもしれませんが、コースにとどまらないことを理解しています。

私たちはお客様の開発過程を加速するために多額の投資を行ってきましたが、エンタープライズレベルのセキュリティとガバナンスへの取り組みを見失っていません。 実際、それはまったく逆です。 私たちの目標は、速度と警戒の間にシームレスな結合を作成することです。

その方法は次のとおりです。

  • 特権のないユーザー: Linux 上のネイティブ Docker Engine とは異なり、権限のないユーザーは Docker Desktop を実行できます。 これは、Docker Desktop が、基になるホスト マシンから分離された Linux VM 内で Docker エンジンを実行するためです。
  • コンテナ分離の強化:ECIはデフォルトでコンテナをルートレスモードで実行し、コンテナ内の機密性の高いシステムコールを検査し、機密性の高いマウントを制限することで、コンテナとホストの間に分離の層を追加します。 開発者のワークフローを変更することなくこれを行うため、安心して通常どおりDockerを使い続けることができます。
  • 設定管理: 設定管理を使用すると、IT 管理者は組織のセキュリティ ポリシーごとに Docker Desktop のセキュリティ設定を操作して、開発者環境のセキュリティを強化できます。
  • 堅牢なセキュリティモデル:当社のセキュリティモデルは、安全性 最適なパフォーマンスを実現するように設計されています。 2つは手をつないで行くべきです。 そのため、お客様の環境を保護しながら、効率的に実行されるようにします。
  • 継続的なセキュリティ監査: セキュリティに対する当社の取り組みは、機能やツールにとどまりません。 私たちは、プラットフォーム、ユーザーコミュニティ、および顧客を現代のさまざまな脅威から保護することに専念しています。 私たちは定期的なセキュリティ監査に投資して、アプリケーションとサービスの隅々まで精査しています。 脆弱性は迅速に特定され、軽減されます。

私たちは、パフォーマンスとセキュリティをシームレスに統合するエンタープライズグレードの製品である包括的なプラットフォームを提供することを目指しています。 このペースの速い世界では、スピードとセキュリティの完璧なブレンドがイノベーションを真に強化します。 Dockerでは、すべてのステップを確実に実行するためにここにいます。

旅を続ける

Docker では、パフォーマンスとイノベーションに対する揺るぎないコミットメントを明確にしています。 ここで紹介する成果はほんの始まりに過ぎません。 ですから、開発の取り組みに着手する際には、私たちがあなたと一緒にいて、秒数を数え、本当に重要なこと、つまり創造と革新にエネルギーを集中させる自信と能力を確保していることを知ってください。 一緒に、SDLC全体で、一度に1つのビルド、コンテナ、およびアプリケーション全体の開発ストーリーを書き直しています。

さらに詳しく