2015/08/14

lxcのdnsmasqでコンテナのIPアドレス管理

lxc楽しくて、調子に乗って何個も作るとコンテナのIPアドレスでアクセスするのが面倒になってくる。
コンテナ側で固定IP設定するのもいいけど、lxc-cloneして使う場合、外側で管理しないと辛い。

ということで、コンテナ内はデフォルトのDHCP設定のままで、ホスト側で制御したい。

一番本家っぽいところを読む・・・
https://help.ubuntu.com/lts/serverguide/lxc.html#lxc-network

やっぱり、ありますね。方法が。

/etc/default/lxc-net ファイルの以下の記述があるんで、コメント外す
LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf
LXC_DOMAIN="lxc" ←必要かなぁ。dnsmasqが使うかな。

/etc/lxc/dnsmasq.conf を作成して以下のように記述
dhcp-host=ubu01,10.0.3.11
dhcp-host=ubu02,10.0.3.12
dhcp-host=ubu03,10.0.3.13
もしくは
dhcp-hostsfile=/etc/lxc/dnsmasq-hosts.conf
と書いて、別ファイルにまとめることも出来るそうな。

$ sudo service lxc-net stop
$ sudo service lxc-net start
とかじゃなくてホスト再起動のほうがいいかも。

その後、コンテナを起動すると、指定アドレスになった。DHCP側で管理できるってことだね。
楽ちん。

ホスト側から名前でアクセスしたい

IP管理するんだったら全部 hosts ファイルに書くっていう手もあるが、それすら面倒くさい。
本家のドキュメントを読むと
server=/lxc/10.0.3.1 を /etc/dnsmasq.conf に書き加えろとか書いてあるんだけど、効果なし。
あちこちの記事でも書き加える場所とか説明がまちまちで、よくわからん。

DNS in Ubuntu + LXC が参考になりました。

/etc/resolvconf/resolv.conf.d/head とか /etc/network/interface当たりに
nameserver 10.0.3.1を加えればいいだけだった。

$ sudo resolveconf -u
更新して

$ ping ubu01
$ ping ubu01.lxc

が出来るようになった。これで、dhcp-hostでIP指定してなくても名前解決が出来るんで
更に楽ちん。


https://github.com/jeremiahsnapp/dev-lxc
これも面白そう。高度すぎ?

0 件のコメント:

コメントを投稿