10 Dockerの神話が暴かれた

コンテナは比較的最近の技術的ブレークスルーのように思えるかもしれませんが、その起源は、Unix システムが初めてコンテナのような概念を使用してアプリケーションを分離した 1970にまでさかのぼります。 2013に早送りすると、Docker はポータブルでユーザーフレンドリーなコンテナ プラットフォームを導入することでこのアイデアに革命をもたらし、広範な採用を引き起こしました。2015年、Dockerは、コンテナエコシステム内でオープンスタンダードを促進するためのOpen Container Initiative(OCI)の創設に尽力しました。OCIによる安定性により、 コンテナ技術は 技術の世界に広まりました。

Docker Desktopはコンテナ化されたアプリケーションを作成するための主要なツールですが、Dockerは依然として多くの誤解に囲まれています。この記事では、Dockerの上位の神話を暴き、この変革的なテクノロジーの機能と利点について説明します。

2400x1260 evergreen docker ブログ e

神話#1:Dockerはもはやオープンソースではありません

Dockerは複数のコンポーネントで構成されており、そのほとんどがオープンソースです。 コア Docker Engine はオープンソースであり、Apache 2の下でライセンスされています。0ライセンスであるため、開発者は引き続き自由に使用および貢献できます。Docker CLIや Docker Composeなど、Dockerエコシステムの他の重要な部分もオープンソースのままです。 これにより、コミュニティは透明性を維持し、改善に貢献し、コンテナソリューションをカスタマイズできます。

Dockerの オープンソースへの取り組み は、 Moby Projectによって最もよく説明されています。 2017年、Mobyは当時モノリシックだったDockerコードベースからスピンアウトし、コンテナ化されたソリューションとプラットフォームを作成するための一連の「ビルディングブロック」を提供しました。Dockerは、無料のDockerEngineプロジェクトと商用のDockerDesktopにMobyプロジェクトを使用します。

ユーザーは、Docker Hubで 信頼できるオープンソースコンテンツを見つける こともできます。 これらの Docker がスポンサーとなっているオープンソース イメージDocker 公式イメージ は、信頼できるバージョンのオープンソース プロジェクトと、より優れた開発のための信頼性の高いビルディング ブロックを提供します。

Dockerは創設者であり、コンテナ標準を定義するOCIの重要な貢献者であり続けています。 このイニシアチブにより、Docker やその他のコンテナ テクノロジの相互運用性が維持され、オープンソースの原則へのコミットメントが維持されます。

神話#2:Dockerコンテナは仮想マシンです 

Dockerコンテナは仮想マシン(VM)と間違われることがよくありますが、テクノロジーの動作はまったく異なります。 VM とは異なり、Docker コンテナにはオペレーティング システム (OS) 全体が含まれていません。 代わりに、ホストオペレーティングシステムのカーネルを共有するため、より軽量で効率的になります。 VM には、ゲスト OS 用の仮想ハードウェアを作成するためのハイパーバイザーが必要であり、これにより大きなオーバーヘッドが発生します。 Docker はアプリケーションとその依存関係のみをパッケージ化するため、起動時間を短縮し、パフォーマンスのオーバーヘッドを最小限に抑えることができます。

ホストオペレーティングシステムのリソースを効率的に利用することで、Dockerコンテナは、複数のオペレーティングシステムを同時に実行するために大量のリソースを必要とするVMよりも全体的に使用するリソースが少なくて済みます。 Docker のアーキテクチャは、1 つのホスト上で多数の分離されたアプリケーションを効率的に実行し、インフラストラクチャと開発ワークフローを最適化します。 この違いを理解することは、Docker の軽量でスケーラブルな可能性を最大限に引き出すために重要です。

ただし、Linux 以外のシステムで実行する場合、Docker は Linux 環境をエミュレートする必要があります。 たとえば、Docker Desktop はフル マネージド VM を使用して、この VM 内で Linux コンポーネントを実行することで、Windows、Mac、Linux 間で一貫したエクスペリエンスを提供します。

神話#3:Dockerエンジンvs.Dockerデスクトップvs.Dockerエンタープライズエディション—それらはすべて同じです

利用可能なさまざまなDockerオプションには、次のような大きな混乱があります。

  • Mirantis コンテナランタイム: Docker Enterprise Edition (Docker EE) は 2019 年に Mirantis に売却され、Mirantis Container Runtime として再ブランド化されました。 Mirantisが管理・販売するこのソフトウェアは、本番環境のコンテナデプロイメント用に設計されており、既存のオーケストレーションツールに代わる軽量なツールを提供します。
  • Docker エンジン: Docker エンジンは、Moby プロジェクトから構築された完全なオープン ソース バージョンであり、Docker エンジンと CLI を提供します。
  • Docker Desktop: Docker Desktop は、Docker Engine と追加機能を組み合わせて開発者の生産性を向上させる、Docker が販売する商用製品です。 Docker Business サブスクリプションには、エンタープライズ向けの高度なセキュリティ機能とガバナンス機能が含まれています。

これらのバリアントはすべてOCIに準拠しており、主に機能とエクスペリエンスが異なります。 Docker Engineはオープンソースコミュニティに対応し、Docker Desktopはアプリケーションの構築とスケーリングのための包括的なツールスイートで開発者ワークフローを向上させ、Mirantis Container Runtimeは高度な管理とサポートを備えたエンタープライズ本番環境に特化したソリューションを提供します。 これらの違いを理解することは、特定のプロジェクト要件と組織の目標を達成するための適切なDockerバリアントを選択するために重要です。

神話#4:DockerはKubernetesと同じものです

この神話は、 DockerとKubernetes の両方がコンテナ化された環境に関連付けられているという事実から生じています。 どちらもコンテナエコシステムの主要なプレーヤーですが、それぞれ異なる役割を果たしています。

Kubernetes (K8s) は、コンテナインスタンスを大規模に管理するためのオーケストレーションシステムです。 このコンテナオーケストレーションツールは、ホストのクラスタ間での複数のコンテナのデプロイ、スケーリング、および操作を自動化します。 その他のオーケストレーション テクノロジには、Nomad、サーバーレス フレームワーク、Docker の Swarm モード、Apache Mesos などがあります。 それぞれに、コンテナ化されたワークロードを管理するための異なる機能が用意されています。

Docker は、主にコンテナ化されたアプリケーションを開発、出荷、および実行するためのプラットフォームです。 これは、アプリケーションとその依存関係をポータブル コンテナーにパッケージ化することに重点を置いており、スケーリングが不要なローカル開発によく使用されます。 Docker Desktop には、マルチコンテナのデプロイをローカルで調整するように設計された Docker Compose が含まれています

多くの組織では、Docker を使用してアプリケーションを開発し、その結果得られた Docker イメージを Kubernetes にデプロイして本番環境に使用しています。 このワークフローをサポートするために、Docker Desktop には、組み込みの Kubernetes インストールと、Compose 形式を Kubernetes に適したコードに変換するための Compose Bridge ツールが含まれています。

神話#5:Dockerは安全ではありません

Docker が安全ではないという考えは、多くの場合、Docker 内でセキュリティがどのように実装されているかについての誤解の結果です。 セキュリティの脆弱性を減らし、攻撃対象領域を最小限に抑えるために、Docker は次の対策を提供します。

オプトイン セキュリティ構成 

いくつかのコンポーネントを除き、Docker はセキュリティのためにオプトインベースで動作します。 このアプローチにより、新規ユーザーの摩擦がなくなりますが、Dockerは、エンタープライズ上の考慮事項や機密データを使用するセキュリティ意識の高いユーザーに対して、より安全に構成できることを意味します。

「ルートレス」モード機能 

Docker Engine は ルートレス モードで実行でき、Docker デーモンはルート権限なしで実行されます。 この機能により、悪意のあるコードがコンテナからエスケープし、ホストのルート権限を取得する可能性が減少します。 Docker Desktop は、ルートレス モードで提供できる以上の高度な分離機能を提供する Enhanced Container Isolation (ECI) を提供することで、セキュリティをさらに強化します。

組み込みのセキュリティ機能

さらに、Docker セキュリティには、名前空間、制御グループ (cgroups)、 seccomp プロファイルなど、コンテナの分離と機能の制限を提供する組み込み機能が含まれています。

SOC 2 Type 2 認証およびISO 27001 認証

オープンソースツールであるDocker Engineは、SOC 2 Type 2 AttestationまたはISO 27001 認証の範囲外であることに注意することが重要です。 これらの認定は、Docker, Inc. の有料製品に関連し、エンタープライズ グレードのセキュリティおよびコンプライアンス機能を追加で提供します。 これらの有料機能は 、Docker セキュリティのブログ記事で概説されており、SOC 2、ISO 27001、FedRAMP などの標準のセキュリティ強化とコンプライアンスの簡素化に重点を置いています。  

これらのセキュリティ対策に加えて、Dockerは、ユーザーが コンテナを効果的に保護 する方法を学ぶのに役立つベストプラクティスをDockerのドキュメントとトレーニング資料で提供しています。 これらの機能を認識して実装することで、セキュリティリスクが軽減され、Dockerがコンテナ化されたアプリケーションの安全なプラットフォームになります。

神話#6:Dockerは死んだ

この神話は、過去10年間のコンテナエコシステムの急速な成長と変化に起因しています。 これらの変化に対応するために、Dockerは積極的に開発されており、広く採用されています。 実際、Stack Overflow コミュニティは、 2024 Developer Survey で Docker を 2 年連続で最も使用され、最も望ましい開発者ツールとして選択し、最も賞賛される開発者ツールとして認識しました。 

Docker Hub は、コンテナイメージの世界最大のリポジトリの 1 つです。 2024 Docker State of Application Development Reportによると、Docker Desktop、Docker ScoutDocker Build CloudDocker Debugなどのツールは、コンテナ開発ワークフローの3分の2以上に不可欠です。また、OCIの創設メンバーであり、Mobyプロジェクトの管理者として、Dockerはコンテナ化の指導的役割を果たし続けています。

自動化の分野では、DockerはOCIイメージの構築とビルドキューの軽量ランナーの作成に不可欠です。 データサイエンスと AI/MLの台頭により、Dockerイメージは、Docker DesktopのGPUワークロード機能によってサポートされるモデル、ノートブック、およびアプリケーションの交換を容易にします。 さらに、Docker は、実際のハードウェアや VM をデプロイする代わりに、迅速かつコスト効率よくテスト シナリオのモックアップを作成するために広く使用されています。

神話#7:Dockerは学ぶのが難しい

Dockerは習得が難しいという考えは、コンテナの概念の複雑さとDockerの多くの機能から来ることがよくあります。 ただし、Docker は世界中の 20 00 万人以上の開発者が使用している基本テクノロジであり、Docker の学習を利用できるようにするための無数のリソースを利用できます。

Docker, Inc. は、開発者エクスペリエンスに取り組んでおり、Docker Desktop およびサポート製品向けに直感的でユーザーフレンドリーな製品設計を作成しています。 ドキュメント、ワークショップ、 トレーニングおよびサンプル には、Docker Desktop、 Docker の Web サイトブログDocker Navigator ニュースレターからアクセスできます。 さらに、Dockerのドキュメントサイトでは 、包括的な ガイドと 学習パスを提供しており、 Dockerと共同制作されたUdemyのコース は、新規ユーザーがコンテナ化とDockerの使用を理解するのに役立ちます。

活発な Docker コミュニティ は、ビデオ チュートリアル、ハウツー、対面式の講演など、豊富なコンテンツとリソースも提供しています。

神話#8:Dockerとコンテナテクノロジーは開発者だけのものです

Dockerは開発者だけのものであるという考えは、よくある誤解です。 Dockerとコンテナは、開発にとどまらず、さまざまな分野で利用されています。 Docker Desktop でコンテナ化されたワークロードを Windows、macOS、または Linux で実行するには、ユーザーの技術的な知識は最小限で済みます。 その統合機能(同期されたホストファイルシステム、ネットワークプロキシのサポート、エアギャップコンテナ、リソース制御)により、管理者はガバナンスとセキュリティを強化できます。

  • データ サイエンス: Docker は一貫性のある環境を提供し、データ サイエンティストがモデル、データセット、開発セットアップをシームレスに共有できるようにします。
  • 医療: Docker は、さまざまな病院システム間での医用画像ソフトウェアなど、患者データの管理とシミュレーションの実行のためのスケーラブルなアプリケーションをデプロイします。
  • 教育: 教育者と学生は、Docker を使用して再現可能な研究環境を作成し、コラボレーションを促進し、コーディング プロジェクトのセットアップを簡素化します。

Docker の汎用性は開発にとどまらず、さまざまなアプリケーションに一貫性があり、スケーラブルで安全な環境を提供します。

神話#9:Dockerデスクトップは単なるGUIです

Docker Desktop は単なるグラフィカル ユーザー インターフェイス (GUI) であるという俗説では、開発者エクスペリエンスの向上、コンテナ管理の効率化、生産性の向上を目的とした次のような広範な機能が見落とされています。

クロスプラットフォームのサポート

Docker は Linux ベースですが、ほとんどの開発者ワークステーションは Windows または macOS を実行します。 Docker Desktop を使用すると、これらのプラットフォームは、ホスト システムのネットワーク、ファイルシステム、およびリソースと統合されたフル マネージド VM 内で Docker ツールを実行できます。

開発者ツール

Docker Desktop には、組み込みの Kubernetes、サプライ チェーン管理用の Docker Scout、ビルドを高速化するための Docker Build Cloud、コンテナのデバッグ用の Docker Debug が含まれています。

セキュリティとガバナンス

Docker Desktop は、管理者向けに、レジストリ アクセス管理イメージ アクセス管理拡張コンテナ分離、認証用のシングル サインオン (SSO)、設定管理を提供し、エンタープライズのデプロイと管理に不可欠なツールとなっています。

神話#10:Dockerコンテナはマイクロサービス専用です

Docker コンテナはマイクロサービスアーキテクチャで人気がありますが、あらゆるタイプのアプリケーションに使用できます。 たとえば、 モノリシック アプリケーションをコンテナ化して、アプリケーションとその依存関係を、さまざまな環境で実行できるバージョン管理されたイメージに分離できます。 このアプローチにより、必要に応じてマイクロサービスへの段階的なリファクタリングが可能になります。

さらに、Dockerはラピッドプロトタイピングに最適であり、実用最小限の製品(MVP)を迅速にデプロイできます。 コンテナ化されたプロトタイプは、VMやベアメタルにデプロイされたプロトタイプと比較して、管理とリファクタリングが容易です。

今、あなたは知っています

事実がわかったところで、Dockerを採用することで、さまざまなユースケースの生産性、スケーラビリティ、セキュリティを大幅に向上させることができることは明らかです。 Dockerの汎用性は、広範な学習リソースと堅牢なセキュリティ機能と組み合わせることで、最新のソフトウェア開発とデプロイに不可欠なツールとなっています。 Docker とその真の機能を採用することで、ユースケースの生産性、スケーラビリティ、セキュリティを大幅に向上させることができます。

詳細なインサイトについては、 2024 Docker のアプリケーション開発状況レポート を参照するか、今すぐ Docker Desktop に飛び込んで、 今すぐ Docker の旅を始めましょう。 

さらに詳しく