コンテナネットワークの基礎知識【第2回】
いまさら聞けない「Docker」とは? コンテナネットワークを知る基礎知識
コンテナの利用が広がるきっかけになったのが「Docker」の登場です。Dockerのコンテナ利用における役割を解説するとともに、コンテナ運用時に重要なコンテナネットワークの基礎知識を紹介します。
コンテナ管理ツール「Docker」の登場は、コンテナが広まるきっかけをもたらしました。Dockerが登場する以前からコンテナの技術は存在していましたが、コンテナを利用するにはOSが持つ「名前空間」や「cgroup」といった複数の機能を組み合わせて、各コンテナ向けの隔離環境を作成する必要があり、コンテナを1つ立ち上げるのも骨の折れる作業だったのです。
Dockerは下記3つの機能を備え、コンテナをより簡単に利用できるようにしています。
- Build(構築)
- アプリケーションの実行に必要なミドルウェアやライブラリをパッケージ化したファイル「コンテナイメージ」の作成
- Ship(移動)
- コンテナイメージの配布
- Run(実行)
- コンテナの実行
OSが持つコンテナ技術を利用する点では、Docker登場以前との大きな違いはありません。コンテナイメージの作成やコンテナの実行といった煩雑な作業を簡素化したことで、コンテナ利用のハードルを大きく下げたことにDockerの意義があります。
当初、Dockerは「Linux」向けに開発されました。2014年にDocker社とMicrosoftが提携を発表し、現在はサーバOS「Windows Server」でもコンテナ技術を活用してDockerを利用できます。例えば「ASP.NET」を使って「IIS」(Internet Information Services)向けに開発したWebアプリケーションをコンテナ化し、実行できます。ASP.NETはMicrosoftがWebアプリケーション向けに開発しているフレームワーク(特定の設計思想に基づくライブラリなどのソフトウェアやテンプレート、ドキュメントの集合体)、IISはWindows Server標準のWebアプリケーションサーバです。ASP.NETとIISをWindows Serverのコンテナ機能を使って動かすことで、Windows Serverにおいてもコンテナの可搬性と隔離性の高さを生かしたアプリケーションの実行が可能です。
コンテナネットワークを理解するための「Docker」の基本
Dockerでコンテナを実行する際はコンテナイメージを利用します。このコンテナイメージを作成する際は、「Dockerfile」というテキストファイルにコンテナイメージの作成方法を記述します。Dockerfileはいわばコンテナイメージの“設計書”です。
下記にDockerfileの例を示しました。Linuxディストリビューション(配布パッケージ)の一つである「CentOS」のコンテナイメージを基にして、サーバでJavaScriptを動かすためのランタイム「Node.js」をインストールし、Node.js向けのアプリケーションを基のコンテナイメージ内にコピーするという内容を記述しています。
FROM centos
RUN yum update && yum install -y nodejs
COPY . /app
WORKDIR /app
CMD [“node”, “index.js”]
Dockerfileの例
このようなDockerfileを用意して、コンテナイメージを作成するコマンド「docker build」を実行します。これによってアプリケーションを動かすための実行環境とアプリケーションを含むコンテナイメージを作成します。実行環境は、使用するOSやフレームワーク(特定の設計思想に基づくライブラリなどのソフトウェアやテンプレート、ドキュメントの集合体)などで構成されます。DockerがこのコンテナイメージをホストOS(コンテナを稼働させるホストサーバのOS)内に保存したら、管理者は実行のコマンド「docker run」によりコンテナを起動できるようになります。
コンテナイメージを格納・共有するには「レジストリ」を利用します。レジストリはネットワークを介してアクセス可能なコンテナイメージの格納場所です。作成したコンテナイメージをレジストリにアップロードしておけば、異なるホストOSからでもレジストリにあるコンテナイメージを指定するだけでコンテナを起動させることができます。
Dockerのコンテナイメージからコンテナを起動すると、ホストOSが持つ複数のコンテナ機能を組み合わせて、各コンテナ専用にコンピューティング、ストレージ、ネットワークなどのリソースが構成されます。こうしてアプリケーション独自の実行環境が出来上がります。コンテナはホストOSの一つのプロセスとして動作しますが、コンテナ内のアプリケーションにとっては独立したOS内で稼働しているように見えます。
Dockerが実現するコンテナネットワーク
前述の通り、各コンテナは専用のネットワークを持ちます。コンテナ内で起動する一般的なアプリケーションは、他のコンテナやコンテナの外部と通信することで初めてその役割を果たします。そのため管理者はコンテナのネットワークを理解しておくことが重要です。Dockerで利用可能なコンテナネットワークは幾つかの種類があります。本稿は一般的なDockerのコンテナネットワークに関して、その機能に少し踏み込んで説明します。
Dockerの各コンテナはそれぞれ「veth」という仮想的なネットワークインタフェース(仮想NIC)を持ちます。vethはルーティングテーブル(経路情報)やネットワークインタフェースを分離させる「ネットワーク名前空間」という仕組みによって隔離されます(図)。アプリケーションはネットワーク名前空間によって分離された個々のコンテナ内で起動します。
各コンテナのvethにはそれぞれIPアドレスが割り当てられ、ホストOS内に作成される仮想スイッチと接続します。非コンテナ環境では同じポート番号を利用する複数のアプリケーションを同時に起動することはできません。これに対してコンテナであれば各コンテナのvethが個々に独立しているため、図のように例えば80番ポートで応答するアプリケーションを同時に複数起動することも可能です。
図の(1)で示すように、コンテナ同士は仮想スイッチを介して直接相互に通信することが可能です。図の(2)と(3)で示すように、コンテナ内外との通信にはホストOSのNAPT(Network Address Port Translation:ポート番号とIPアドレスを変換する仕組み)機能を利用し、外部のネットワークに接続したり、コンテナで起動するアプリケーションを外部のネットワークに公開したりします。
第3回は、コンテナ運用における課題や「Kubernetes」をはじめとしたコンテナオーケストレーションツールについて紹介します。
執筆者紹介
奈良昌紀(なら・まさのり) ネットワンシステムズ ビジネス開発本部 第1応用技術部
通信事業者のデータセンターにおいてネットワークやサーバの運用を経験後、ネットワンシステムズに入社。帯域制御やWAN高速化製品、仮想化関連製品を担当後、主にクラウドや仮想インフラの管理、自動化、ネットワーク仮想化の分野に注力している。
細谷典弘(ほそや・のりひろ) ネットワンシステムズ ビジネス開発本部第3応用技術部
データセンターネットワークの他、マルチクラウド向けのハードウェアやソフトウェアの最先端技術に関する調査・検証、技術支援などを担当。注目分野は「Kubernetes」。放送システムのIP化に向けた技術調査・検証も担当している。
千葉 豪(ちば・ごう) ネットワンシステムズ ビジネス開発本部 第1応用技術部
IaaS(Infrastructure as a Service)をはじめとしたクラウド基盤技術および管理製品を担当。コンテナ技術を中心とした開発・解析基盤の構築から運用、コンテナに関連した自動化技術や監視製品の技術検証などに注力している。
Copyright © ITmedia, Inc. All Rights Reserved.
コンテナネットワークの基礎知識
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
2
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
3
221人調査で分かった「情シス最大のストレス」は?
-
4
AIで人を減らした企業がもう心変わり 「AIブーメラン現象」の実態
-
5
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
6
「Microsoft 365のセキュリティ運用」に関するアンケート
-
7
10年かけてBIを再構築したアマノの一手 「権限がない」「予算がない」でもDXは動かせる
-
8
LLMの「過学習」、正しく説明している文章はどれ?
-
9
「データストレージの活用方法」に関するアンケート
-
10
「業務改善とツール活用」に関するアンケート
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー