コンテナネットワークの基礎知識【第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
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
2
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
5
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
6
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
7
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
10
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー