LoginSignup
22
23

More than 5 years have passed since last update.

docker-machine で作成した Virtualbox 上の VM の IP を固定する方法

Last updated at Posted at 2016-10-21

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.nn を自由に設定する方法がこっち。

以下の手順では 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
22
23
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
23