コンテナ ネットワークとは
コンテナ ネットワークは、自宅のデスクトップや Web スケールのエンタープライズ ネットワーク ソリューションで使用される、仮想マシンに似たコンセプトの新しいアプリケーション サンドボックス メカニズムです。コンテナ内は、ホストやほかのすべてのコンテナから分離され、独自のユーザー、ファイル システム、プロセス、ネットワーク スタックを持つフル機能の Linux 環境になっています。コンテナ内のすべてのアプリケーションは、コンテナ内で利用可能なファイルまたはリソースのみアクセスまたは変更することが許可されています。
複数のコンテナのそれぞれに独自のアプリケーションをインストールして独自の依存関係を持たせ、同時に実行することができます。これは、新しいバージョンのアプリケーションで依存関係のアップグレードが必要であるにもかかわらず、そのアップグレードを実行するとサーバ上で実行されているほかのアプリケーションの依存関係と競合を引き起こす可能性がある場合に、特に便利です。コンテナは、仮想マシンとは異なり、コンピュータ上のすべてのハードウェアを完全にシミュレートするのではなく、ホスト リソースを共有するものであるため、仮想マシンよりも小型で高速であるとともに、オーバーヘッドが軽減されます。特に Web スケールのアプリケーションの用途において、コンテナは、仮想マシンに代わるマイクロサービス アーキテクチャの展開プラットフォームとして設計されました。
コンテナには可搬性という特性もあり、たとえばコンテナ エンジンの Docker では、コンテナとその依存関係をすべてまとめてパッケージ化し、ダウンロード可能なコンテナ パッケージとして提供できます。コンテナは、ダウンロード後すぐにホスト上で実行できます。

VMware Container Networking with Antrea のデータシート

Kubernetes 向け VMware Container Networking with Antrea の発表
コンテナ ネットワークの仕組み
コンテナ ネットワークは、コンセプトが仮想マシン(VM)に似た仮想化の一形態ですが、異なる点があります。第一に、仮想マシンがハードウェアの仮想化であるのに対し、コンテナ方式は OS の仮想化の一種です。
ハイパーバイザー上で稼働する各仮想マシンには、それぞれ独自のオペレーティング システム、アプリケーション、ライブラリがあり、永続データのカプセル化、新しい OS のインストール、ホストとは異なるファイル システムの使用、異なるカーネル バージョンの使用が可能です。
一方コンテナは、イメージの「実行中のインスタンス」です。つまり、起動していくつかのタスクを実行したら削除される、一時的なオペレーティング システムの仮想化です。コンテナは一時的であるという特性上、より大きなアドレス空間を必要とする仮想マシンと比べて、数多くのコンテナのインスタンスを実行できます。
コンテナでは、ネームスペースと cgroup という 2 つの Linux カーネル機能を利用して分離を実現します。コンテナをほかのリソースから分離してコンテナ独自のシステムのビューを提供するために、各リソースに対してネームスペースを作成し、残りのシステムから共有できないようにします。そしてコントロール グループ(cgroup)を使って、CPU、メモリ、ディスク I/O、ネットワークなどのシステム リソースを監視、制限します。
コンテナ ネットワークのメリット
コンテナは、マイクロサービスのプラットフォームとして仮想マシンに代わって急速に採用が進んでいます。
コンテナには、いくつかの重要なメリットがあります。
- コンテナ化されたアプリケーションを既存のワークロードとともに実行可能:コンテナ化されたアプリケーションと従来の仮想マシンを同じインフラストラクチャ上で同時に実行することができるため、柔軟性とスピードが向上します。
- セキュリティ、視認性、管理性とともに可搬性を実現:コンテナ固有の設計により、サンドボックスを使ったセキュリティの向上、ホストでのリソースの透過性、タスクの管理、実行環境の可搬性が実現します。
- 既存のインフラストラクチャを活用して容易に拡張:既存の SDDC を利用することで、コストと時間がかかるインフラストラクチャの再設計を回避し、サイロ化を防止できます。サイロは、同一組織の異なる部門がそれぞれ独自の IT インフラストラクチャを保持している場合に発生します。このような「サイロ効果」は、組織全体の IT ポリシーやアップグレードを適用する際に、各部門の技術構成の違いに起因する問題を引き起こします。サイロの再統合はコストと時間のかかる作業ですが、コンテナ ネットワークによってこれを回避することができます。
- 開発者は Docker 互換のインターフェイスを使用可能:Docker に慣れている開発者は、Docker と互換性があるインターフェイスを使用してコンテナ内でアプリケーションを開発し、セルフサービス管理ポータルまたは UI を通じてコンテナをプロビジョニングできます。
Web スケールのアプリケーション展開におけるコンテナ ネットワークの活用
エンタープライズ環境では、コンテナがマイクロサービス アーキテクチャの一部として展開されることで、大規模な Web アプリケーションに共通する個々のタスクがカプセル化されます。各タスクは独自のコンテナを持ち、API や GUI のような外部向けのコンテナは公共のインターネットに公開され、それ以外はプライベート ネットワークに配置されます。
マイクロサービス モデルには以下のメリットがあります。
- シンプルな展開:ホストの構成をコンテナに埋め込むことができるため、展開後すぐに使用することができます。
- ディスポーザブル:コンテナは、すばやく起動して廃棄できるように設計されています。ホストに障害が発生したときも、予備のサーバを使うのと同じくらい簡単にアプリケーションをオンラインに戻すことができます。
- フォルト トレランス:コンテナによって、データベースや Web サーバの冗長化が容易になります。同じコンテナを複数のノードにコピーすることで、高可用性とフォルト トレランスが実現します。
コンテナ ネットワークの種類
現在、コンテナ ネットワークには 5 つの種類があります。その特徴は、コンテナごとの IP モデルであるかポッドごとの IP モデルであるか、および NAT が必要か必要でないかを軸とするものです。
- None:コンテナはネットワーク スタックを受け取りますが、外部接続はありません。このモードは、コンテナのテスト、後のネットワーク接続のためのコンテナのステージング、および外部通信を必要としないコンテナへの割り当てに便利です。
- ブリッジ:コンテナはホストの内部ネットワークでブリッジされ、同じホスト上のほかのコンテナとの通信が許可されます。ホストの外部からコンテナにアクセスすることはできません。ブリッジ ネットワークは Docker コンテナのデフォルトです。
- ホスト:この設定により、作成されたコンテナはホストのネットワーク ネームスペースを共有し、ホストのすべてのネットワーク インターフェイスにアクセスできるようになります。外部ネットワーク構成がもっともシンプルになるこの種類では、ネットワーク インターフェイスを共有するため、ポートの競合が発生しやすくなります。
- アンダーレイ:アンダーレイは、ホスト上で動作するコンテナに対してホスト インターフェイスを直接開放し、ポート マッピングの必要性を排除することで、ブリッジよりも効率的な運用を実現します。
- オーバーレイ:オーバーレイは、ネットワーク トンネルを使用してホスト間で通信し、コンテナが異なるホストでホストされている場合でも、同じマシン上にあるかのように動作させることができます。
関連するソリューションおよび製品
Antrea
署名済みのイメージとバイナリ、および Project Antrea の完全なエンタープライズ サポートの提供
コンテナ/Kubernetes ネットワーク
コンテナ化されたアプリケーションとマイクロサービスの接続と保護
Virtual Cloud Network
Virtual Cloud Network でパブリッククラウドの操作性をデータセンターに導入