コンテナネットワークの基礎知識【第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項目でチェック -
製品資料
[株式会社ウェーブスプリッタ・ジャパン] 100Gbps対応の光トランシーバーはどう選ぶ? 10分で分かる選定のポイント -
製品資料
[株式会社フィックスターズ] 組み込み開発の生産性と機密性を両立、自社環境で構築する「セキュアAI」活用術 -
製品レビュー
[ServiceNow Japan合同会社] 問い合わせの約9割を自動で解決、AI主導の自律型CRMがもたらす業務変革の全貌 -
市場調査・トレンド
[ServiceNow Japan合同会社] AI活用が業務自動化で止まる理由は何か? 調査で判明した課題と変革への道筋
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
AI全部入り「Microsoft 365 E7」に企業が二の足を踏む訳 移行意向はわずか4%
-
2
「Microsoft 365」が乗っ取られる 跡形もなくMFAを破る手口
-
3
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
4
「VMware離れ」は本当か 3000社がVCF 9にかじを切った現実的な理由
-
5
エンジニアが選考を辞退する本当の理由 7割が隠す“面接の違和感”とは
-
6
【基本情報技術者試験】「デュプレックスシステム」と「デュアルシステム」の違いは?
-
7
マンガで解説:採択率は3割台? デジタル化・AI導入補助金申請の落とし穴
-
8
AWS障害でも補償ゼロの衝撃 サイバー保険で情シスが見落とす「細則の壁」
-
9
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
10
「Microsoft一択」で本当にいいのか 知らぬ間にライセンス費用が膨らむ真相
ホワイトペーパーランキング PR
-
1
生成AIのハルシネーションを防止 回答精度を高めるセマンティックレイヤーとは
-
2
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
3
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
4
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
5
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
6
マンガで解説:「ゼロトラスト」「SASE」の必要性とメリット
-
7
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
8
情報セキュリティ対策早分かりガイド:25の自社診断で弱点と解決策を理解
-
9
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
10
AIが「わざわざ使うツール」になっていない? 業務で自然に使う導線にする秘訣
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー