AKAI TSUKI

System development or Technical something

When boot2docker vm startup in virtualbox, it calls "bootlocal.sh" file.

Docker Toolboxを利用するとWindows環境で簡単にDockerが使えるようになって便利ですね。

C:\Usersがマウントされてます

Docker Quickstart Terminalから起動すると
Virtualboxでboot2dockerのイメージが起動し
docker-machineで以下の通り参照できます。

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

$

さて、このDockerホストですが、自動でWindowsのユーザディレクトリ(自分の環境だとC:\Users)が
マウントされています。

VMSSHログインして"df"コマンドで確認すると以下のようになっていまして
"c/Users"がDockerホストの"/c/Users"にマウントされています。

docker@default:~$ df
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   896.5M    163.0M    733.5M  18% /
tmpfs                   498.0M         0    498.0M   0% /dev/shm
/dev/sda1                17.9G      1.3G     15.6G   8% /mnt/sda1
cgroup                  498.0M         0    498.0M   0% /sys/fs/cgroup
c/Users                 110.5G     78.9G     31.5G  71% /c/Users
/dev/sda1                17.9G      1.3G     15.6G   8% /mnt/sda1/var/lib/docker/aufs


"c/Users"はVirtualBox側で確認すると共有フォルダとして登録されている名前になります。
f:id:akai_tsuki:20160506194112p:plain


VBoxManageコマンドでも確認できます。

> VBoxManage showvminfo default

 *snip*

Shared folders:

Name: 'c/Users', Host path: 'c:\Users' (machine mapping), writable

 *snip*

起動時に呼び出される "bootlocal.sh"

で、本題の"bootlocal.sh"ですが、上記のc:\Usersとは異なる場所をマウントしたくなり
Virtualbox側で以下のように設定しました。

f:id:akai_tsuki:20160506195302p:plain


VBoxManageで同様に。

> VBoxManage showvminfo default

 *snip*

Shared folders:

Name: 'c/Users', Host path: 'c:\Users' (machine mapping), writable
Name: 'e/dev_work', Host path: 'E:\dev_work' (machine mapping), writable

 *snip*

あとはDockerホスト側でマウントする必要があるのですが、
毎回Dockerホストを起動した際にマウントコマンドを実行するのは面倒なため、
boot2dockerのVMが起動する際に呼び出してくれる"bootlocal.sh"(/var/lib/boot2docker/bootlocal.sh)を利用します。


実際には、以下のようにマウントするためのコマンドを記述しておきます。

docker@default:~$ cat /var/lib/boot2docker/bootlocal.sh
sudo mkdir /home/docker/dev_work
sudo mount -t vboxsf -o uid=1000,gid=50 e/dev_work /home/docker/dev_work
docker@default:~$

再起動後、確認してみると

docker@default:~$ df
Filesystem                Size      Used Available Use% Mounted on
tmpfs                   896.5M    163.0M    733.5M  18% /
tmpfs                   498.0M         0    498.0M   0% /dev/shm
/dev/sda1                17.9G      1.3G     15.6G   8% /mnt/sda1
cgroup                  498.0M         0    498.0M   0% /sys/fs/cgroup
c/Users                 110.5G     79.0G     31.5G  71% /c/Users
e/dev_work              250.9G     85.8G    165.1G  34% /home/docker/dev_work
/dev/sda1                17.9G      1.3G     15.6G   8% /mnt/sda1/var/lib/docker/aufs
docker@default:~$

おおっ!
/home/docker/dev_workにマウントされてますね!

なお、
以下のサイトにboot2dockerの仕組みが書かれていました。
WindowsでもDocker Composeを使いたい - Qiita


実際の起動処理は以下にある"bootscript.sh"を参照。
github.com