コンテナネットワークの基礎知識【第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
-
事例
[フォーティネットジャパン合同会社] 複雑化しがちな「SASE運用」 IT・医療・金融などの事例に見る導入成功の秘訣 -
製品資料
[フォーティネットジャパン合同会社] 「SD-WAN」導入で失敗しないための5つの重要事項 -
技術文書・技術解説
[フォーティネットジャパン合同会社] VPNの代替候補「ZTNA」を理解できるようになる“3大要素”とは? -
事例
[フォーティネットジャパン合同会社] すぐ分かる「SD-WAN」選定のポイント 成功企業はどんな成果を出した? -
製品資料
[SCSK株式会社] 「Dropbox」管理・運用の困りごと解決ガイド
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
PHP脆弱性「PHP2Shell」で2260万件に影響 情シスの緊急チェックリスト
-
2
「Microsoft 365」が乗っ取られる MFAを破る“本物の画面”の恐怖
-
3
「Windows」の不要なファイルを安全に消して容量を空ける方法
-
4
「ネットワークインフラの現状と課題」に関するアンケート
-
5
半数がブルーカラー転向を視野に? ベテランエンジニアを追い込む“54歳の壁”
-
6
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
7
「ITサービスマネジメントの利用実態」に関するアンケート
-
8
みずほ証券が「液冷サーバ」を採用 1日3.6億件の計算を支えるための要件
-
9
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
10
SAP導入後も残る“Excel依存” 京急電鉄は「kintone」でどう解消した?
ホワイトペーパーランキング PR
-
1
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
2
2026年のサイバーセキュリティには何が必要か? 最新データに学ぶ傾向と対策
-
3
経験豊富な即戦力人材に直接アプローチできる、「攻めの採用」への転換術
-
4
「IT史に名を残すシステム障害」8選
-
5
最速72分でデータが流出? 最新の脅威トレンドや侵入手法から分かった防衛策
-
6
AI駆動開発のスピードと安全性を両立 「品質・セキュリティ管理」の実践ガイド
-
7
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
8
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
9
「標的型攻撃メール」事例・サンプル集
-
10
Microsoft 365のメールセキュリティ、3つの“死角”と追加で検討すべき対策とは
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー