コンテナーは最新のエンタープライズ インフラストラクチャの基本コンポーネントであり、Docker と Kubernetes はコンテナーの世界の 2 つの最大の名前です。 その結果、Kubernetes と Docker は DevOps の人気のトピックとなっていますが、それはどちらか一方の問題ではありません。
企業は Docker と Kubernetes (K8s) 連携して DevOps パイプラインを構築および拡張します。 ただし、企業は、直面する無数の脅威からコンテナーのワークロードを保護するために、DevSecOps のベスト プラクティスに従う必要があります。 この記事では、Kubernetes と Docker のトピック、より適切な Kubernetes と Docker Swarm の比較を詳しく見ていきます。 コンテナ セキュリティ.
このトピックを理解するには、まずコンテナーを理解することから始めます。 コンテナーは、アプリケーションに必要なすべてのライブラリと依存関係が 1 つのパッケージに含まれるコードの単位です。
コンテナは仮想マシンとよく比較されますが、いくつかの重要な点で異なります。
コンテナーが解決する基本的な問題の 1 つは、アプリケーションが開発では動作するが本番では動作しないという IT 運用部門を伝統的に悩ませていた「自分の環境で動作する」という課題です。 コンテナーを使用すると、基盤となるコンテナー エンジン (Docker Engine など) がある限り、あらゆるハードウェア、オペレーティング システム、クラウド上でまったく同じワークロードを実行できます。
Dockerは、企業がコンテナをパッケージ化して実行するのに役立つプラットフォームです。
他のプラットフォームでは企業がコンテナを操作できますが、Dockerはその使いやすさとスケーラビリティのおかげで人気を博しています。 現在、Docker は、あらゆる規模の企業でマイクロサービス アーキテクチャと CI\CD パイプラインを使用するクラウドネイティブ アプリケーションの定番となっています。
Dockerでは、企業はプレーンテキストのDockerfileを使用してコンテナの作成に役立てています。 Dockerfile には、Docker がコンテナー イメージを自動的にビルドするのに役立つ命令 (コマンド) が含まれています。 Dockerコンテナイメージは、実行するとコンテナになる不変のテンプレートです。 Dockerコンテナは、実際にワークロードを実行し、不変のコンテナイメージの上に書き込み可能なコンテナレイヤーを追加するものです。 Dockerコンテナイメージは不変であるため、企業は環境全体でまったく同じコンテナを確実かつ繰り返しインスタンス化できます。
Docker がコンテナを作成して実行するためのツールであるのに対し、Kubernetes はコンテナ オーケストレーションのためのツールです。
Kubernetes を使用すると、企業は次のことを管理できます。 クラスター Dockerコンテナを含むコンテナの規模。 たとえば、Kubernetes ではリソース構成が可能になります (例: コンテナーごとの RAM)、自動スケーリング、負荷分散、エンタープライズ アプリケーションの変更ロールアウト (またはロールバック)。
これらは 2 つの異なる目的を果たすため、Kubernetes と Docker はどちらか一方を選択するという話題ではありません。 実際、多くの場合、Docker と Kubernetes は DevOps パイプライン全体で一緒に使用されます。 ただし、Docker プラットフォームに加えて、Docker, Inc. という会社は、Kubernetes に匹敵するコンテナ オーケストレーション ツールである Docker Swarm も提供しています。
Kubernetes と Docker とは異なり、Docker Swarm と Kubernetes は同一の比較です。 どちらも、企業がコンテナ デプロイメントの管理と拡張に使用できるオープンソースのコンテナ オーケストレーション プラットフォームです。
どちらもコンテナ オーケストレーションの実行可能なオプションですが、現代の企業の間では Kubernetes が明らかに人気となっています。 実際、最新の RedHat State of Kubernetes レポート 回答した DevOps、エンジニアリング、セキュリティの専門家の 88% が Kubernetes を使用していることがわかりました。
Kubernetes の優位性の理由には、その堅牢な機能セット、複数のコンテナー ランタイム (containerd、CRI-O、Docker Engine、Mirantis) のサポート、および Pod や ReplicaSet などの概念を使用した強力な抽象化が含まれます。
ただし、Docker Swarm は一般に Kubernetes よりも軽量で複雑ではないと考えられているため、シンプルなコンテナ オーケストレーション ソリューションを探している企業にとっては便利です。 Docker Swarm "Classic" はアクティブにサポートされなくなりましたが、Docker Engine の現在のバージョンには Docker Swarm モードが含まれています。 Swarm モードを使用すると、企業はコンテナー オーケストレーション タスクに Docker CLI を使用できます。
Docker Swarm には Kubernetes の高度な機能がありませんが (たとえば、Swarm はネットワーク構成のサポートが制限されており、Docker ランタイムのみをサポートしています)、Docker Compose や Docker Registry などの Docker エコシステムの他のコンポーネントと緊密に統合されています。
Docker Swarmは、シンプルなDockerコンテナオーケストレーションのための高品質のオプションですが、唯一のオプションではありません。 2020年8月、 K3s (軽量 Kubernetes)、Cloud Native Computing Foundation (CNCF) サンドボックス プロジェクトとして承認され、GitHub にはすでに 19,000 を超えるスターが付いています。
企業が使用するコンテナオーケストレーションプラットフォームやコンテナエンジンに関係なく、コンテナワークロードの保護は必須です。 コンテナはエンタープライズインフラストラクチャの基本的なコンポーネントであるため、攻撃者にとって価値の高い標的でもあります。
差出人 コンテナイメージでのクリプトマイニングエクスプロイト コンテナエスケープの脆弱性への CVE-2019-5736のruncの欠陥では、企業はコンテナをさまざまな脅威から確実に保護する必要があります。
リスクを軽減し、セキュリティ体制を改善するために、コンテナセキュリティ企業が従うべきベストプラクティスには、次のようなものがあります。
見る Dockerコンテナのセキュリティ そして Kubernetes (K8s) のセキュリティ コンテナのセキュリティについて深く掘り下げます。
コンテナ セキュリティ向けCloudGuard は、ビルドからランタイムまでエンタープライズワークロードをエンドツーエンドで保護するように設計された、完全に自動化されたコンテナセキュリティプラットフォームです。 CloudGuard を使用することで、企業は従来のセキュリティ ツールでは不可能な方法で最新のコンテナ セキュリティの課題に対処できる DevSecOps プラットフォームを手に入れることができます。
たとえば、CloudGuard を使用すると、企業は次のことができるコンテナ セキュリティ ソリューションを獲得できます。
CloudGuard が企業のセキュリティ体制の向上にどのように役立つかについて詳しく知りたい場合は、 クラウドセキュリティの専門家が主導するデモにサインアップする。デモでは、マルチクラウド環境全体でコンテナを完全に制御し、可視化する方法を学びます。 コンテナのセキュリティの詳細については、無料の コンテナセキュリティガイド.