第3章 コンテナ・ネットワーキングの基本
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ここまでネットワークの基礎とLinuxネットワークについて説明してきたが、ここからはコンテナでどのようにネットワークが実装されているかについて説明する。ネットワークと同様、コンテナにも長い歴史がある。この章では、その歴史を振り返り、コンテナを実行するためのさまざまなオプションについて説明し、利用可能なネットワーキング・セットアップを探る。今のところ、業界はコンテナランタイムの標準としてDockerに落ち着いている。従って、Dockerネットワーク・モデルに飛び込み、CNIがDockerネットワーク・モデルとどのように異なるかを説明し、Dockerコンテナによるネットワーク・モードの例で章を終える。
コンテナ入門
このセクションでは、コンテナへと導いたアプリケーション実行の進化について説明する。当然のことながら、コンテナは本物ではないと語る人もいるだろう。コンテナは、OSカーネルにおける基礎技術の抽象化である。技術的に正しいということは、技術のポイントを見誤り、アプリケーションの管理とデプロイという難しい問題を解決する道をどこにも導いてくれない。
アプリケーション
アプリケーションの運用には常に課題があった。クラウド、オンプレム、そしてもちろんコンテナなどだ。アプリケーション開発者やシステム管理者は、異なるバージョンのライブラリへの対応、デプロイの完了方法の把握、アプリケーション自体の旧バージョンの存在など、多くの問題に直面している。長い間、アプリケーションの開発者はこれらの問題に対処しなければならなかった。bashスクリプトやデプロイツールには、どれも欠点や問題がある。どの新しい会社にもアプリケーションをデプロイする方法があるので、どの新しい開発者もこれらのテクニックを学ばなければならない。職務の分離、パーミッションのコントロール、システムの安定性の維持のために、システム管理者はデプロイのために開発者のアクセスを制限する必要がある。 シスアドはまた、マシンの効率を上げるために同じホストマシン上で複数のアプリケーションを管理する。そのため、新しい機能をデプロイしたい開発者と、エコシステム全体の安定性を維持したいシステム管理者の間で競合が作成される。
一般化OSは、できるだけ多くの種類のアプリケーションをサポートするため、そのカーネルにはあらゆる種類のドライバー、プロトコル・ライブラリー、スケジューラーが含まれる。図3-1は、1つのマシンに1つのオペレーティングシステムを示しているが、そのホストにアプリケーションをデプロイする方法はたくさんある。アプリケーションのデプロイは、すべての組織が解決しなければならない問題である。
図3-1. アプリケーション・サーバ
ネットワークの観点から見ると、1つのオペレーティングシステムで、1つのTCP/IPスタックが存在する。その単一のスタックは、ホストマシン上でポートの競合という問題を作成する。システム管理者は、マシンの使用率を上げるために同じマシン上で複数のアプリケーションをホストし、それぞれのアプリケーションはそのポートで実行しなければならない。そのため、システム管理者、アプリケーション開発者、ネットワークエンジニアは、これらすべてを一緒に調整しなければならない。デプロイのチェックリストに追加するタスクは、トラブルシューティング・ガイドの作成と、すべての ...