コンテナネットワークの基礎知識【第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.
コンテナネットワークの基礎知識
この記事の著者
関連記事
新着ホワイトペーパー PR
-
技術文書・技術解説
[Jamf Japan 合同会社] MDMだけでモバイルセキュリティは十分? 不足する対策を16項目でチェック -
事例
[Wrike Japan 株式会社] 世界的な家電メーカーが実践する「クリエイティブプロセス効率化」の方法とは? -
事例
[Wrike Japan 株式会社] 世界的テクノロジー企業に学ぶ、プロセス標準化とプロジェクト納品自動化の秘訣 -
事例
[Wrike Japan 株式会社] ソニー・ピクチャーズ テレビジョンに学ぶ、次世代サービスデリバリーのヒント -
事例
[Wrike Japan 株式会社] ソミック石川に学ぶ、ICT浸透後に直面した「工数管理」の課題と解決策
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「データストレージの活用方法」に関するアンケート
-
2
IT製品の導入に関するアンケート「サーバ&ストレージ」編
-
3
「企業内サーバ環境の利用実態」に関するアンケート
-
4
「ITインフラとデータ保護・バックアップ対策」に関するアンケート
-
5
「AI活用を前提とした業務PCへの移行」に関するアンケート
-
6
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
7
「Microsoft 365」が乗っ取られる 跡形もなくMFAを破る手口
-
8
AI全部入り「Microsoft 365 E7」に企業が二の足を踏む訳 移行意向はわずか4%
-
9
「にゃんこ大戦争」インフラ“大引っ越し”の理由 なぜAWSからGoogle Cloudに?
-
10
膨らむAIコストに歯止め GitHubのマルチモデルルーターは何が違うのか
ホワイトペーパーランキング PR
-
1
マンガで解説:「ゼロトラスト」「SASE」の必要性とメリット
-
2
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
3
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
4
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
5
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
6
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
7
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
8
ドラマで分かる、標的型攻撃メールの被害を受ける企業と回避できる企業の分岐点
-
9
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
10
少額減価償却資産が40万円未満へ拡大、令和8年度税制改正で押さえるべき変更点
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー