第29回 Docker Networkingの基礎知識 標準的なネットワークを理解する:古賀政純の「攻めのITのためのDocker塾」(2/5 ページ)
引き続きDocker環境におけるネットワーキングの基礎を解説します。今回は、Dockerでの標準的なネットワークを例に、手順を交えながらその構成がどうなっているのかを理解していきましょう。
DockerにおけるNAT、IPマスカレード、IPパケット転送
NATやIPマスカレードそのものは、Linuxの世界で古くから利用されています。Dockerも、NATとIPマスカレードの機能を使って、ホストOSとDockerコンテナが通信できるようになっているため、グローバルIPアドレスや、DockerのホストOSが所属するネットワークのIPアドレスの消費を大幅に節約することも可能です。一つのシステムで数千個、数万個という規模のDockerコンテナが同時稼働する場合に、非常に有効な手段といるでしょう。
DockerコンテナがホストOSのNICを経由して外部のネットワークと通信するには、Dockerコンテナが発信するIPパケットをホストOSが転送できなければなりません。NAT機能を提供するルータをLinuxマシンで実現する場合やDocker環境の場合は、IPパケットを別のネットワークセグメントに転送する必要があります。このIPパケット転送を行うには、Linux OS標準搭載の「ip_forward」と呼ばれるカーネルパラメータを調整します。
具体的には、Linux OSの「ip_foward」に関するカーネルパラメータを「1」に設定します。Dockerエンジンは、標準設定でIPパケットが転送できるように「ip_forward」が自動的に「1」に設定されます。実際に、DockerホストでIPパケットの転送が有効になっているかどうかは、以下のようにカーネルパラメータを確認します。
# cat /proc/sys/net/ipv4/conf/all/forwarding 1
Dockerコンテナが外部のネットワークと通信するには、このIPパケットの転送機能が最低限有効になっていることが必要です。また、複数のコンテナ間の通信にもこのIPパケットの転送が利用されます。
今回想定するDocker環境のネットワーク構成
今回は、物理NICが1ポート存在する物理サーバ上にインストールしたCentOS 7.2上で、Dockerエンジンが稼働しているとしましょう。既に、物理NICのeth0で、固定のIPアドレスの172.16.1.123/16が割り当てられているとします。
Dockerエンジンが稼働するホストOSに設定されている固定のIPアドレス172.16.1.123/16は、グローバルIPアドレスではなくプライベートIPアドレスです。プライベートIPアドレスが設定されたホストOSとその上で稼働するDockerコンテナがインターネットにアクセスするには、グローバルIPアドレスをプライベートIPアドレスに変換するNATの設定を施したLinuxサーバ(一般的にはNATサーバ、またはNATゲートウェイと呼びます)をホストOSと同じLANセグメントに別途用意します。
NATゲートウェイにおいては、プライベートIPのネットワークに所属するDockerホストから送信されたIPパケットをグローバルIPのネットワークに転送し、IPパケットをグローバルIPアドレスに変換するようNATを設定しておきます。こうすることで、ホストOSはインターネットにアクセスできます。また、ホストOS上で稼働するDockerコンテナも、Dockerエンジンが標準で設定するホストOSのNATの機能によってホストOSと通信ができるので、結果的にDockerコンテナもインターネットにアクセスできるようになります。
関連記事
- 第28回 Docker Networkingの基礎知識 ソフトウェア定義型時代の到来
今回からDocker環境のネットワーキングに迫ります。ネットワーキングと聞くと、とても難解なイメージがあるかもしれませんが要素技術は非常に重要です。従来の物理システムと異なる点もあるDockerのネットワーキングについて、まずは基本を解説します。 - 第20回 Dockerで3Dゲームを動かす――準備編
非常に深い関係にあるゲームとコンピュータ。今回からDockerの環境で3Dゲームを稼働させる方法についてご紹介していきます。まずはその目的や方法、必要な環境などについてみていきましょう。 - 第25回 32ビット環境に迫る「2038年問題」 時計がおかしくなると……
いまだ数多くのシステムで32ビットのOSやアプリケーションが使われていますが、実は深刻な影響が懸念される「2038年問題」を抱えています。将来どのような影響が出るのかについて、今回から「Docker」による検証を先取りしていきます。 - 【古賀政純の「攻めのITのためのDocker塾」】バックナンバー
Copyright © ITmedia, Inc. All Rights Reserved.