Dockerデスクトップの舞台裏の魔法

最近のすべての 変更 により、かなりの数の人々がDockerデスクトップについて話し、それが実際にマシン上で何をするのかを理解しようとしています。 何人かの人々は、「それは単なるコンテナUIですか?」と尋ねました。 

優れた開発者ツールは、新しい開発者にとって魔法であり、経験豊富な開発者の時間を大幅に節約します。 これが、Dockerデスクトップでやろうとしていることです。 Docker Desktop は、Linux の場合と同様に、Mac や Windows でも簡単にコンテナを構築、共有、実行できるように設計されています。 Dockerは面倒で複雑なセットアップを処理するため、コードの記述に集中できます。 

Dockerデスクトップが開発者のために処理する魔法には、次のものがあります。

  • Linux ツールとコンテナーを実行する、安全で最適化された Linux VM 
  • ホストOSへのシームレスなプラミングにより、コンテナはファイルシステムとネットワークにアクセスできます 
  • Kubernetes、Docker Compose、buildkit、スキャンなどのバンドルされたコンテナツール 
  • すべてのコンテナコンテンツを視覚的に管理するためのDockerダッシュボード 
  • Macとウィンドウズのためのシンプルなワンクリックインストーラ 
  • 事前設定された健全で安全なデフォルト
  • システムを安全に稼働させるための自動増分更新

これらのいくつかをさらに詳しく見ていきましょう!

モビーグループ4

1 つのパッケージから始める 

上から始めて、DockerデスクトップはMacまたはWindows用の1つのパッケージとして提供されます。 これにより、ワンクリックでDockerを使用するために必要なすべてのものを数秒でセットアップする単一のインストーラーがあります。 

しかし、これを行うときにDockerデスクトップがインストールしているのは何ですか?

Dockerによって安全に構築され、保守されています

Docker Desktop の中心には、Docker が管理する軽量の LinuxKit VM があります。 

これは、Docker Desktop for Mac での 以前の作業 のような、顧客への影響を伴うトリッキーな問題に対処するのに役立つことを意味します。 Docker Desktop は、この VM を設定するだけでなく、必要に応じてカーネル パッチやその他のセキュリティ修正プログラムを適用することで、この VM を長期にわたって最新の状態に保ちます。 これにより、エステートで管理している別のマシンイメージがなく、代わりにDockerがこれを処理します。この VM は、含まれているすべての Linux ツールが実行される場所であり、Docker エンジンを使用しているときにすべての Linux コンテナーが実行される場所です。 

Windows では、この VM を WSL2 で実行し、UI でオンに切り替えるだけで、WSL2 ディストリビューションのすべての Docker へのアクセス権を付与できます。 WSL 2 バックエンドの詳細については、「 Docker デスクトップ WSL 2 バックエンドの紹介 」を参照してください。 Mac (Intel および M1 マシン上) では、現在、以前の HyperKit 実装から移行して、Apple の新しい仮想化フレームワークを使用してこの VM を実行しています。

Dockerデスクトップには、このVMの設定を管理するためのグラフィカルインターフェイスも提供され、Macでは、これがアクセスできるリソース(CPU、RAMなど)を変更するためのツールが提供され、Windowsでは、これにアクセスできるディストリビューションを選択するためのツールが提供されます。 VMにいるということは、VMを実行しているコンテナがホストマシン上のファイルシステムのどの領域にアクセスできるかを制限できることも意味します。

ホストマシンとの統合 

Docker Desktopを使用したことのあるほとんどの人が気付くように、VMを持っているだけではこの魔法は得られませんが、Dockerを使用するために「VMに入る」必要はありません。 代わりに、これはローカルマシン上でネイティブに機能するかのように機能します。 これは、ネットワークとファイル システムの両方を VM に統合して、これをローカル マシンのシームレスな部分のように見せることで実現されます。

ネットワーキングを使用すると、Docker DesktopはローカルホストポートをVM内のポートにマップするため、VMのポート80などでコンテナを実行し、ローカルホストのブラウザからアクセスして、実行しているものを確認できます。 これに加えて、VPNKitを使用して、IT部門が複雑なVPNポリシーを構成したり、ネットワークプロキシの使用を要求したりしている場合でも、各コンテナがホスト上でネイティブアプリとして実行されているかのように、ネットワークがシームレスであることを保証します。 Dockerデスクトップはこれらすべてを自動化し、必要に応じて変更を加えるためのシンプルなUIを提供します。

ネットワークに加えて、ファイルシステムの統合もあり、Docker DesktopはホストからVMへのバインドマウントをセットアップし、VM内のローカルファイルに(必要に応じて)アクセスできるようにします。 ファイルシステムの変更通知 (fsnotify/inotify ) は透過的に機能し、ソースコードが変更されると自動的にページのリロードをトリガーします。 また、コンテナーからホストにルーティングして、Docker コンテナーがホストで実行されているローカル サービスにアクセスできるようにすることもできます。 Mac でのファイル共有の実装について詳しく知りたい場合は、Daveの詳細なブログ投稿 「FUSEを使用した新しいDockerデスクトップファイル共有の実装の詳細」を確認してください。 

最高のコンテナツールが含まれています 

この統合はすべてVMにとって素晴らしいものですが、VMのコンテンツがなければ、多くのことは提供されません。 これが、VM 内に最適な Linux コンテナー ツールをインストールして最新の状態に保つ理由です。 

ほとんどの人が「Docker」エクスペリエンスと考えるのは、Docker Engineだけでなく、開発者がコンテナを操作するためのシームレスな環境を一緒に生成する複数のツールを含むセットアップです。 この中心は、Dockerデスクトップの一部として含まれているOCI互換コンテナ・ランタイムであるDockerエンジンです。 Docker Desktop には、これへのアクセスを提供する Docker CLI もバンドルされており、Docker Compose 2.0 も含まれているため、開発者はお気に入りのマルチコンテナマニフェスト形式をローカルで操作できます。

Docker Desktop には、Docker CLI の一部としてビルドキットと buildx も含まれているため、開発者はより高速なビルドにアクセスでき、開発者は任意のローカル マシンから x86 または ARM 用にビルドできます。 これに加えて、Docker Desktop には、イメージの脆弱性をスキャンするためのツール (Docker スキャン)、Docker Hub でコンテンツやチームを操作するためのツール (ハブツール)、CLI から直接 AWS ECS と Microsoft Azure ACI に接続してデプロイする機能 (Docker コンテキスト) が含まれています。

これらはDocker Desktopの唯一のLinuxコンテナツールではなく、ツールの素晴らしいコミュニティがあることに感謝しており、開発者エクスペリエンスの一部としても含めるべき最良のツールを引き続き検討しています。 最初に導入されたのは、Docker Desktop での Kubernetes (K8s) のサポートでした。 ワンクリックで、クラスターを実行するためにローカルイメージストアで使用できるロードバランサーを使用してK8sをインストールしてセットアップできます。

グラフィカルコントロール 

Docker Desktop のこれらのコア コンポーネントはすべて、これらの設定の制御と管理に役立つシンプルなグラフィカル インターフェイスが付属しています。 MacのメニューバーとWindowsのシステムトレイに囲まれているDockerデスクトップクジラのアイコンがあり、設定にジャンプしてアクセスしたり、コアアクションを制御したり、Dockerダッシュボードにジャンプしたりできます。

Docker ダッシュボードは、Docker デスクトップ上のコア Docker コンポーネントを管理するための簡素化された UI を提供します。 Docker ダッシュボードでは、ローカルおよび Docker Hub での Docker イメージの管理、 ローカルで実行されているコンテナー の管理、および Docker ボリュームを管理および探索する機能がサポートされるようになりました。 

ポータブル開発者ツール

Docker デスクトップには、開発環境などの新機能も含まれています。 開発環境を使用すると、開発者は、環境の詳細をコードと共に SCM でバージョン管理することで、反復可能で再現可能な開発環境を簡単に設定できるようになりました。 開発者が開発環境で作業すると、Docker Hub を介して進行中のコードと依存関係をワンクリックで共有できます。 その後、開発者環境とチームメイトの環境を切り替えて、ブランチ間を移動し、現在の Git ブランチから移動することなく、進行中の変更を確認できます。 これにより、PR のレビューは、新しい環境を開くのと同じくらい簡単になります。

マルチアーキテクチャのサポート

これらすべてのツールに加えて、Docker Desktopは、選択したシステムアーキテクチャに関係なく、ツールの使用もサポートします。 Docker Desktop に含まれる Apple M1 ARM Mac と QEMU のサポートにより、作業中のプラットフォームが何であれ、マルチアーキテクチャイメージ (Linux x86、ARM、Windows) をビルドして使用することができます。 

これらすべてのコンポーネントと同様に、Dockerの更新により、これらすべてが連携して同期され、自動的に適用される最新の修正で安全になります。 これにより、チームの同期が維持され、同じツールで安全に作業できます。

また、Docker サブスクリプションを使用すると、これらのアイテムのいずれかをチームで正常に機能させる際に問題が発生した場合は、すべての開発者の生産性を維持するためにブロックを解除するためのサポートを利用できます。 

今すぐ始める

開始するには、 Mac または Windows 用の Docker Desktop をダウンロードします。 開発者ワークフローに Docker を使用する方法の詳細については、 オリエンテーションとセットアップに関するドキュメントをご覧ください。ドッカーのドキュメント。 私たちはすべてのデスクトップユーザー向けの新機能を構築し続けており、必要なものを聞きたいと思っているので、 ロードマップでお知らせください。 

最後に、9月のコミュニティオールハンズミーティングで、Docker デスクトップの新機能やスニークプレビューなど、Docker全体の次世代イノベーションのいくつかを紹介します。 無料イベントは、9月16日木曜日の午前8時から午前11時(太平洋標準時)に開催され、 今すぐ登録してください 詳細を見る.

フィードバック

0 「Dockerデスクトップの舞台裏の魔法」についての考え