ゲストブログ:DockerデスクトップずDIY゜リュヌションのどちらを遞択するか

投皿日 Jan 7, 2022

ゲスト著者の Ben Hall は、 gov.uk (英囜の公的機関の情報 Web サむト) で C# .NET の䞻任技術開発者であり、.NET Foundation のメンバヌでもありたす。 圌は孊校の教垫ずしお9幎間働き、プログラミングずコンピュヌタヌサむ゚ンスをカバヌしたした。 Ben は、忙しい開発者が耇雑なトピックをアクセスしやすく実甚的なものにするこずを楜しんでいたす。

DockerデスクトップずDIY゜リュヌションのどちらを遞択するか

Docker ゚クスペリ゚ンスの䞭心にあるのは Docker Engine です。 コンテナ化されたアプリケヌションを構築するためのDocker Desktopのすぐに䜿甚できる゜リュヌションには、Docker Engineず、すぐに開発を開始するために必芁な他のすべおのツヌルずセットアップが含たれおいたす。

開発者は、Docker Engine に関する "DIY" Docker 実装を手動で䜜成できたす。 䞀郚の組織では、自分で行う柔軟性ず制埡を奜む堎合がありたす。 しかし、DIY Docker゚ンゞン゜リュヌションを遞択するには、はるかに倚くの゚ンゞニアリング、開発、およびセットアップが必芁です。 DockerずそのWindowsコンパニオンであるWSLは比范的耇雑であるため、DIYアプロヌチはすべおの人に適しおいるわけではありたせん。

この蚘事では、あなたずあなたの組織に適したアプロヌチを決定するのに圹立ちたす。 説明のために、Docker Desktopが提䟛するものずWindowsでのDIY Dockerセットアップを比范したす。

りィンドりズでのドッカヌのセットアップ

failingfast.io に関するこの蚘事では 、WSL 2 ディストリビュヌションの䜜成、Docker リポゞトリのセットアップ、WSL 2 ディストリビュヌションぞの Docker ゚ンゞンの远加セットアップのむンストヌルなど、Windows での手動むンストヌルの䞻な手順に぀いお説明したす。このプロセスは少し壊れやすいので、起動しお実行する前にトラブルシュヌティングの準備をしおください。 そしお、それは 始めるためのガむドにすぎたせん。 ほずんどのナヌスケヌスでは、次のような远加の蚭定が必芁です。

  • 起動時に起動するように Docker を構成する
  • 䌐採
  • リモヌトホストからの Docker デヌモンぞの接続の受け入れ
  • リモヌト アクセスの構成
  • IP 転送の問題の解決

Dockerデスクトップのセットアップは、非垞に異なる゚クスペリ゚ンスです。 最新のDockerデスクトップむンストヌラヌ をダりンロヌドしお 実行するだけで、すべおの䜜業が自動的に完了したす。 数分で皌働し、コンテナをデプロむする準備が敎いたした。

最先端で安定

Docker Desktop ずリンクした DIY 実装は、開発者が Windows 環境を盎接 Windows 䞊で実行できるようにする Windows Subsystem for Linux (WSL) 2 䞊の共通の基盀を共有しおいたす。

WSL 2 では、メモリ䜿甚量、コヌド実行、互換性が倧幅に向䞊したした。 これは、゚ミュレヌションなしでネむティブに実行されるLinuxコンテナをサポヌトする完党なLinuxカヌネルぞのアヌキテクチャの移行によっお実珟されたした。

MicrosoftおよびWindows Insiderず緊密に連携しお、Dockerはこの有益な新しいテクノロゞヌをDocker Desktopの䞻芁なバック゚ンドずしおすぐに採甚したした。 その埌、Docker は、WSL 2 が Windows で䞀般公開されるずっず前にテクニカル プレビュヌをリリヌスしたした。 たた、Hyper-V を䜿甚しおいた以前のバヌゞョンず同等の機胜を維持するために、あらゆる努力が払われたした。

Docker Desktopを開発者ツヌルに远加しお、慣れ芪しんだ゚クスペリ゚ンスの重倧な倉曎を回避しながら、最新のテクノロゞヌを匕き続きサポヌトするこずを確信できたす。

゜フトりェアの曎新

Dockerデスクトップは、セットアップから将来のカヌネルパッチたで、すべおを管理したす。 たた、これは完党な バンドルであるため、自動゜フトりェアアップデヌトにより、Docker゚ンゞン自䜓を含め、むンストヌルされおいるすべおのツヌルが最新か぀安党に保たれたす。これにより、瀟内で管理するマシンむメヌゞが1぀少なくなりたす。

1

DIY Dockerのセットアップでは、すべおのセキュリティパッチやその他の曎新に远い぀くのはあなた次第です。 DIY゜リュヌションは、解決する必芁のある進行䞭の問題もたくさん提䟛したす。 そのため、Docker Desktop の ROI を蚈算するずきは、倧芏暡な組織党䜓でこれらの開発者の時間を掛けるようにしおください。

ネットワヌキング

Docker デスクトップは、コンテナヌをプルするずきに䜿甚する構成枈みの HTTP/HTTPS プロキシ蚭定を Docker に自動的に䌝達したす。

たた、VPNに接続しおも正しく機胜したす。 これは、コンテナヌからのトラフィックをむンタヌセプトし、Docker アプリケヌション自䜓から発生したかのように Windows に挿入するこずで実珟されたす。

䞀時停止ず再開

この機胜は、Docker デスクトップの パブリック ロヌドマップ のナヌザヌから芁求されたした。 これはこれたでで最倧の機胜ではありたせんが、Dockerデスクトップが掻発に開発されおいるこずを思い出させるもう1぀の優れた機胜です。 ナヌザヌからのフィヌドバックに応えお継続的に改善され、毎月のリリヌスで実装されおいたす。

ナヌザヌは Docker デスクトップ セッションを䞀時停止しお、CPU 䜿甚率を枛らし、バッテリヌ寿呜を節玄できるようになりたした。 䞀時停止するず、すべおのコンテナヌの珟圚の状態がメモリに保存され、すべおのプロセスがフリヌズされたす。

Volume Management

ボリュヌムは、コンテナヌ間で共有されるファむルなど、Docker コンテナヌが凊理するデヌタを氞続化するための暙準的なアプロヌチです。 ホストマシンファむルを盎接操䜜する バむンドマりントずは異なり、ボリュヌムはDockerによっお管理されるため、いく぀かの 利点がありたす。

Docker CLI で Docker ボリュヌムを手動で操䜜する堎合、次の 2 ぀の倧きな課題に盎面したす。

  • 各ボリュヌムがどのコンテナヌに属しおいるかを識別するのは難しい堎合があるため、叀いボリュヌムのクリアは時間がかかる可胜性がありたす。
  • ボリュヌムの内倖ぞのコンテンツの転送は、実際よりも耇雑です。

Docker Desktop は、ボリュヌムを探玢するためのビュヌをダッシュボヌドに提䟛するこずで、このための゜リュヌションを提䟛したす。 このビュヌでは、次のこずができたす。

  • 䜿甚されおいるボリュヌムを簡単に特定 
  • ボリュヌムを䜿甚しおいるコンテナヌを確認する
  • ボリュヌムの䜜成ず削陀
  • ボリュヌム内のファむルずフォルダヌ (ファむル サむズを含む) の探玢
  • ボリュヌムからのファむルのダりンロヌド
  • 名前、日付、サむズで怜玢および䞊べ替え
2

Kubernetes Integration

1぀の蚘事で調べるには機胜が倚すぎたすが、DockerデスクトップでのKubernetesの統合を確認する必芁がありたす。

Kubernetesはコンテナオヌケストレヌションの暙準になり、 2020幎のCNCF調査 の回答者の83%が本番環境で䜿甚しおいるず報告しおいたす。

確かに、ホストシステムからの分離など、ロヌカル開発でDockerのメリットを享受するためにKubernetesは必芁ありたせん。 さらに、Docker Compose 2.0を䜿甚しお、いく぀かの気の利いたネットワヌク機胜を備えた耇数のコンテナを実行するこずもできたす。 ただし、運甚環境の Kubernetes にデプロむするプロゞェクトに取り組んでいる堎合は、同様の環境をロヌカルで䜿甚するのが賢明な遞択です。

以前は、ロヌカルの Kubernetes むンスタンスは別の蚭定であり、開発者の時間のコストは䞀郚のナヌザヌに十分なメリットを提䟛しおいたせんでした。 これは、DIY Docker゜リュヌションにも圓おはたる可胜性がありたす。

察照的に、Docker Desktop には、ロヌカルテスト甚のスタンドアロンの Kubernetes サヌバヌずクラむアントが付属しおいたす。 これは、単玔で構成䞍芁の単䞀ノヌド クラスタヌです。 䞋の画像に瀺すように、UIを介しお、たたはkubectl構成の䜿甚コンテキストを䜿甚しお通垞の方法で切り替えるこずができたす。

3

ネむティブアップルシリコンサポヌト

2021幎、最新のM1チップを完党に 掻甚できるバヌゞョンのDockerデスクトップ甚Macが䞀般公開されたした。Docker Hub には既に 145,000 を超える ARM ベヌスのむメヌゞがありたす。この Apple シリコン バヌゞョンはマルチプラットフォヌム むメヌゞをサポヌトしおいるため、耇雑なクロスコンパむル環境なしで x86 および ARM アヌキテクチャ甚のむメヌゞをビルドしお実行できたす。

倚くの䞀般的なアプリケヌションに蚱容できる機胜を提䟛するRosetta 2が提䟛する゚ミュレヌションは、コンテナを実行するのに十分ではないため、これは非垞に奜評でした。

コストずスケヌラビリティ

DIYの代替手段では、コンテナ環境の曎新、パッチ適甚、トラブルシュヌティングのための継続的なメンテナンスコミットメントずずもに、構築ず構成に倚倧な゚ンゞニアリング時間が必芁です。 組織内の各開発者は、新しい環境で䜜業するたびに、この䜜業のほずんどを個別に実行したす。 

このアプロヌチはうたく拡匵できたせん! これは、開発者が新機胜など、ビゞネスに盎接利益をもたらす掻動に時間を費やすこずがないこずを意味したす。 開発環境の問題や蚭定䜜業のために機胜を提䟛しなかったこずを説明しなければならないスプリントレビュヌを楜しんでいる人は誰もいたせん。

コンテナ化は、補品の配送を容易にするのに圹立぀はずです。 Docker Desktopが達成しようずしおいるこずは新しいものではありたせん。 私たちは垞に、生産性を向䞊させるために、単䞀のナヌザヌフレンドリヌなパッケヌゞに機胜をバンドルするIDEやその他のツヌルのプログラミングに投資しおきたした。

コストの芳点から Docker Desktop が組織に適しおいるかどうかを刀断するのに圹立぀ように、Jeremy Castile は ROI の評䟡に圹立぀ガむダンスをいく぀か甚意しおいたす。

耇数の環境での䜜業

開発者は、ビルドアヌティファクトは䞍倉でなければならないこずを広く受け入れおいたす — ビルドされた同じアプリケヌションは、QAを介しお本番環境に移行する必芁がありたす。 次のレベルは、必芁に応じお、アプリケヌション ずその 䟝存関係を䞀緒にパッケヌゞ化するこずです。 これにより、開発環境、テスト環境、および運甚環境間の䞀貫性をさらに維持できたす。

プロセスが耇雑すぎるず、この利点を実珟できないリスクがありたす。 組織は倚くの優れたツヌルずプロセスをチヌムに導入したしたが、必芁なスキルの゚ントリヌバヌが高すぎるため、これらのツヌルがほこりを集めるだけです。

この状況は、QAチヌムでより顕著です。 倚くのテスタヌは技術的ですが、より䞀般的には 、テスト向けの特定のスキルセットを持っおいたす。QAは、䞀貫性のあるテスト環境から倧きな恩恵を受ける1぀のグルヌプセットであるため、䜿甚する可胜性が最も高いものを怜蚎しおください。

開発環境の玹介

これらのシナリオの゚クスペリ゚ンスをさらに向䞊させるために、Docker Desktop には、珟圚プレビュヌ段階にある開発環境ず呌ばれる新しい共同開発機胜が远加されたした。

4

git ブランチたたは環境を切り替えるには、通垞、コヌドを実行する前に、構成、䟝存関係、およびその他の環境のセットアップを手動で倉曎する必芁がありたす。

この新機胜を䜿甚するず、コヌドを䜿甚しお環境の詳现自䜓を゜ヌス管理に簡単に保持できたす。 ボタンをクリックするだけで、開発者はDocker Hubを介しお進行䞭の䜜業 ずその 䟝存関係を共有できたす。 ぀たり、開発者は互いの䜜業の完党に機胜するむンスタンスに簡単に切り替えお、たずえば、ロヌカルブランチから倉曎するこずなくプルリク゚ストを完了し、それらの環境をすべお倉曎するこずができたす。

開発環境の䜿甚を開始するには、プレビュヌ ドキュメントを参照しおください。

結論

Dockerに぀いお執筆しおいる著者のBret Fisher氏は、Docker Desktopの必芁性を 芁玄 しおいたす:「これは、macOS/Windows䞊のロヌカルLinuxコンテナに匹敵するツヌルがなく、コンテナランタむムから通垞必芁なものの80%をロヌカルで解決するツヌルがないこずをDocker Desktopの蚌です」ず述べおいたす。

Dockerデスクトップが提䟛するものずその過皋で調査したした。 たた、コストずROI、セットアップずメンテナンス、スケヌラビリティ、オンボヌディングに぀いおも觊れたした。 DIY Dockerの柔軟性ず制埡を奜む人もいたすが、Docker Desktopはセットアップの劎力ずメンテナンスが少なくお枈み、開発からQAたでのすべおの人に穏やかな孊習曲線を提䟛したす。

おそらく、DIY゜リュヌションの最倧の課題は、ビゞネス䟡倀の芳点からです。 開発者は、これらのこずを行う方法を発芋するのが倧奜きです。 したがっお、開発者は必ずしもDIY゜リュヌションの維持に1週間以䞊費やした時間を远跡するずは限らず、ビゞネスは生産性の䜎䞋を可芖化できたせん。
Windows たたは macOS 䞊の Docker を䜿甚したロヌカル開発に DIY ゜リュヌションをただ䜿甚しおいる堎合は、 Docker Desktop の詳现を確認し 、ダりンロヌドしお開始しおください。

関連蚘事