vagrant-libvirtで作ったVMを、dockerのネットワークにつなげる。
...というタイトルのものの、実際は既存のlinuxブリッジにlibvirtの仮想マシンをつなげる方法です。
1. つなげたいdockerネットワークのブリッジ名を調べる.
特に設定をしていなければdocker0
のはずですが、
以下の様にして調べても大丈夫だと思います。
docker network inspect <ネットワーク名>
2. libvirtにおける仮想マシンの名前を取得する
以下の様にすれば取得できます. ただし、defaultの部分はVagrantfileで定義(していれば)した名前になるはず。
virsh domname $(cat .vagrant/machines/default/libvirt/id)
3. virshで仮想マシンのXMLを編集する
virsh edit 取得した名前
で、仮想マシンの定義ファイルを開き
<interface type='bridge'> <source bridge='dockeのブリッジ名'/> ... </interface>
とすると、仮想マシンに新たなインターフェースが追加されます。 (もしかすると、VMの再起動が必要かも?)
4. 仮想マシン内部でアドレスやルーティングを追加する。
前の手順でつないだインターフェースにはアドレスが割り振られ無いので、 仮想マシン内部で自分でIPアドレスを設定します。(172.17.0.100等)
デフォルトルートもコンテナのネットワークと同じ様にすればいい感じで使えそう。