docker-machine で作成した Virtualbox 上の VM の IP を固定したかった。
stop, start を繰り返すと、デフォルトで使われている 192.168.99.n
の IP が重複したりする。
使い捨て環境なんだから、その都度、鍵の再生成等して頑張るのも一つかも知れないが、面倒なので作成した VM ごとに IP を固定したかったので、方法を調べた。
なんでそうなるのかまで調べてないので間違っている点があるかも…(間違いがあれば指摘して下さい…)
方法1: virtualbox-hostonly-cidr
オプションを使う方法
$ docker-machine create --driver virtualbox --virtualbox-hostonly-cidr "192.168.55.1/24" NAME
これで、 192.168.55.100
の IP を持った VM となる。
上記の 55
のところを変えていけば、末尾が 100 の VM が出来上がるはず。
ただし、これだと、 55
の位置で IP を管理する事となってしまうのでちょっと不便。
方法2: boot2docker startup script で指定する方法
方法1の IP の管理は不便なので 192.168.99.n
の n
を自由に設定する方法がこっち。
以下の手順では dev1
という名前の VM に IP 192.168.99.50
を設定するとして記載。
まずは、適当に VM を作る。
$ docker-machine create --driver virtualbox dev1
作成した VM に SSH で入り VM の中の /var/lib/boot2docker/bootsync.sh
に boot2docker startup script を準備する。
$ docker-machine ssh dev1
$ sudo vi /var/lib/boot2docker/bootsync.sh
#!/bin/sh
/etc/init.d/services/dhcp stop
ifconfig eth1 192.168.99.50 netmask 255.255.255.0 broadcast 192.168.99.255 up
$ sudo chmod 755 /var/lib/boot2docker/bootsync.sh
$ exit
上記を準備した VM に対して docker-machine コマンドから restart, regenerate-certs する。
$ docker-machine restart dev1
$ docker-machine regenerate-certs dev1
これで dev1
の IP が 192.168.99.50
になる。
$ docker-machine ip dev1
とか $ docker-machine ls
とかで確認できる。
2016-10-21 19:12 追記
上記の方法2をシェルスクリプトにまとめてみた。
使い方
$ docker-machine-static-ip.sh --id IP_ADDRESS DOCKER_MACHINE_NAME