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 オプションによって制御可能。
2-1. Pipework でブリッジを作成
boot2docker VM上で Pipework を実行し、各コンテナをブリッジインタフェース br1 に対応させたところ。
コンテナ内部に eth1 インタフェースが作成され、指定した IPアドレスが割り振られる。
これで固定のIPアドレスを使ったコンテナ間通信が可能になる。
ただし、boot2docker VM からそのアドレスへのアクセスはまだできない。
以下は、コンテナに 192.168.99.0/24 ネットワークのアドレスを割り当てる例。
2-2. ブリッジにIPアドレスを割り当てる
boot2docker VM 上で、ブリッジに接続するためのIPアドレスを割り振れば、
boot2docker VM から各コンテナに固定アドレスを使った接続が可能になる。
ただし、この方法では Mac から直接コンテナにアクセスすることはできない。
3-1. VirtualBox のホストオンリーアダプタを作成する
VirtualBox の機能でホストオンリーネットワークを作成し、boot2docker VM のアダプタにも静的なIPアドレスを
設定する。
これで、Mac から boot2docker VM へ固定のIPアドレスでアクセスできるようになる。
3-2. ホストオンリーアダプタに対して Pipework を実行する
さいごに、boot2docker のホストオンリーネットワーク用アダプタ eth1 に対して Pipework を実行する。
ブリッジインタフェース以外に対して Pipework を実行すると、macvlan ブリッジが設定されるようだ。
このようなネットワーク構成であれば、もはや VirtualBox + Docker の多段ポートフォワーディングは必須でない。
Related Posts
0 件のコメント:
コメントを投稿