takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

VirtualBox + docker-machine で作成した VM の IP を変更する

docker-machine create で作成した VM (boot2docker) の IP アドレスを変更する手順メモ

検証環境

Windows10 Home Edition
VirtualBox 6.1.10

# Docker Host OS (CoreOS)
$ uname -a
Linux default 4.14.154-boot2docker #1 SMP Thu Nov 14 19:19:08 UTC 2019 x86_64 GNU/Linux

# Docker Toolbox 19.03.1
Docker version 19.03.1, build 74b1e89e8a
docker-machine.exe version 0.16.1, build cce350d7

発生した問題について

Docker Toolbox 18.06.1-ce の環境から 19.03.1 にアップデート後、 docker-machine createVM を作り直したところ VM の IP アドレスが 192.168.99.101 になった。
(VM は 1 台しか動かしていない)
恐らく新しい VM を作るときに古い VM のホストオンリーネットワークアダプタが残っていたのが原因と考えられる。

$ docker-machine.exe ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER     ERRORS
default   -        virtualbox   Running   tcp://192.168.99.101:2376           v19.03.5

特に実害はないが、以前の環境では 192.168.99.100 だったので可能ならば戻したい。
合わせて VM を複数作成したときに、各 VM の固定 IP 化も行いたい。
(VM の起動順で IP が変わるのを防ぐため)

解決方法

boot2docker の起動スクリプト作成

VM/var/lib/boot2docker/bootsync.sh に下記内容でスクリプトを作成。

#!/bin/sh

/etc/init.d/services/dhcp stop
ifconfig eth1 192.168.99.100 netmask 255.255.255.0 broadcast 192.168.99.255 up

実行属性を付与

$ sudo chmod 755 /var/lib/boot2docker/bootsync.sh

VM の再起動と TLS 証明書の更新

$ docker-machine restart default
$ docker-machine regenerate-certs default

動作確認

VM の IP アドレスが 192.168.99.100 に変更されたことを確認する。

$ docker-machine.exe ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER     ERRORS
default   -        virtualbox   Running   tcp://192.168.99.100:2376           v19.03.5

参考サイト

qiita.com

stackoverflow.com

qiita.com