第29回 Docker Networkingの基礎知識 標準的なネットワークを理解する:古賀政純の「攻めのITのためのDocker塾」(5/5 ページ)
引き続きDocker環境におけるネットワーキングの基礎を解説します。今回は、Dockerでの標準的なネットワークを例に、手順を交えながらその構成がどうなっているのかを理解していきましょう。
ホストOSのブリッジの状態を見てみよう
vethの接続状況を見るには、docker0のブリッジの状況を見ると分かります。ブリッジに接続されている仮想インタフェースを確認するには、ホストOS上でbrctlコマンドを入力します。このコマンドは、Dockerとは無関係に、ホストOS上に設定されているブリッジインタフェースの状態確認や設定を行えます。
# brctl show docker0 bridge name bridge id STP enabled interfaces docker0 8000.02426c931c59 no vethc06ae92
上記の例では、docker0ブリッジに仮想インタフェースの「vethc06ae92」が接続されていることがわかります。これにより、このdocker0と接続されているveth、さらにvethと直結のDockerコンテナ内のeth0が接続されることで、Dockerコンテナが外部と通信することができます。
上図を理解できれば、複数のDockerコンテナ同士が、どのように通信するのかも分かります。複数のDockerコンテナを起動し、互いにpingによるICMP通信ができるかを確認してみてください。
docker0ブリッジ以外の通信方法
Dockerでは、docker0ブリッジネットワークを利用しないコンテナ同士の通信方法も存在します。ホストネットワークへの直接接続する方法や、OpenStack環境において仮想スイッチを実現する「Open vSwitch」を使う方法、UNIXドメインソケットとIPC(プロセス間通信)を組み合わせるといった方法です。ホストネットワークへの直接接続は、ブリッジなどを経由せず、コンテナがホストOSのIPを使って直接外部と通信を行う方法ですが、この方法では、コンテナにホストOSのIPアドレスが付与されます。ホストネットワークへの直接接続は、docker run実行時に「--network=host」を付与します。
# docker run -it --network=host --name test02 centos:centos7.2.1511 /bin/bash # export http_proxy=http://proxy.yoursite.com:8080 # yum install -y iproute # ip a ... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:7c:f1:83 brd ff:ff:ff:ff:ff:ff inet 172.16.1.123/16 brd 172.16.255.255 scope global eth0 ...
ホストネットワークへの直接接続の場合は、コンテナのIPアドレスがホストOSのIPアドレスになっていることに注意が必要です。
以上で、Docker環境のネットワーク構成やアーキテクチャ、DockerホストとDockerコンテナの通信、コンテナに付与されたIPアドレスの確認、バーチャルイーサネット、そして、ブリッジの状態を確認する方法などを簡単に紹介しました。
今回ご紹介した内容は、1台の物理サーバで稼働するDocker環境におけるネットワーキングのほんの一部ですが、Dockerのネットワーキングの基本的な仕組みを理解する上で非常に重要な要素です。「なんだか難しそうだ」と感じて最初は戸惑うかもしれませんが、Docker環境におけるネットワークを管理していく上で避けて通れませんので、ぜひ慣れるようにしてください。
(つづく)
古賀政純(こが・まさずみ)
日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリスト。兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国ヒューレット・パッカードからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。現在は日本ヒューレット・パッカードにて、Hadoop、Spark、Docker、Linux、FreeBSDなどのサーバー基盤のプリセールスSE、文書執筆を担当。日本ヒューレット・パッカードが認定するオープンソース・Linux テクノロジーエバンジェリストとして、メディアでの連載記事執筆、講演活動なども行っている。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「OpenStack 実践ガイド」「Docker 実践ガイド」「CentOS 7実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード。古賀氏の最新記事が読めるブログはこちら。
関連記事
- 第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.