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)が
マウントされています。
VMにSSHログインして"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側で確認すると共有フォルダとして登録されている名前になります。
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側で以下のように設定しました。
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