3.24.2014

Docker: How the networking of Mac + boot2docker + Pipework works

Docker: Mac + boot2docker + Pipework で構築した環境のネットワーク周りについて

 

自分自身の理解のためにネットワーク構成を可視化してみる。

 

環境

  • OS: Mac OS X 10.9 (Mavericks)
  • VirtualBox: 4.3.6
  • boot2docker: v0.7.0 (Docker 0.9.0 を含む)
  • jpetazzo/pipework (最終コミット: 2014-03-15 時点)

 

構成イメージ

 

1. boot2docker インストール直後

Docker の内部ネットワークとして 172.17.0.0/16 のIPアドレスが各コンテナに割り当てられるが、
静的なアドレスを指定することはできない。
また、Macから直接そのIPアドレスへは到達できないので、VirtualBox と Docker の二段階の
ポートフォワーディングを経由してアプリケーションへアクセスするのが一般的である。

コンテナ間通信可否については、Docker デーモンの -icc オプション、および
コンテナ起動時の --link オプションによって制御可能。

1

2-1. Pipework でブリッジを作成

boot2docker VM上で Pipework を実行し、各コンテナをブリッジインタフェース br1 に対応させたところ。
コンテナ内部に eth1 インタフェースが作成され、指定した IPアドレスが割り振られる。

これで固定のIPアドレスを使ったコンテナ間通信が可能になる。
ただし、boot2docker VM からそのアドレスへのアクセスはまだできない。

以下は、コンテナに 192.168.99.0/24 ネットワークのアドレスを割り当てる例。

2 1

2-2. ブリッジにIPアドレスを割り当てる

boot2docker VM 上で、ブリッジに接続するためのIPアドレスを割り振れば、
boot2docker VM から各コンテナに固定アドレスを使った接続が可能になる。

ただし、この方法では Mac から直接コンテナにアクセスすることはできない。

2 2

3-1. VirtualBox のホストオンリーアダプタを作成する

VirtualBox の機能でホストオンリーネットワークを作成し、boot2docker VM のアダプタにも静的なIPアドレスを
設定する。

これで、Mac から boot2docker VM へ固定のIPアドレスでアクセスできるようになる。

3 1

3-2. ホストオンリーアダプタに対して Pipework を実行する

さいごに、boot2docker のホストオンリーネットワーク用アダプタ eth1 に対して Pipework を実行する。
ブリッジインタフェース以外に対して Pipework を実行すると、macvlan ブリッジが設定されるようだ。 

このようなネットワーク構成であれば、もはや VirtualBox + Docker の多段ポートフォワーディングは必須でない。

3 2

 

 

 

Related Posts

 

References

0 件のコメント:

コメントを投稿