boot2docker でボリュームの共有を行う

## はじめに

boot2docker を利用した docker cli から `--volume, -v` オプションは使うことができない。

boot2docker は VirtualBox に Docker がインストールされた最小構成の VM を作成し、docker コマンドは VM 内で起動している Docker デーモンに対して操作を行う形になっている。そのためホストとコンテナで共有を行うには、ホストと VM でディレクトリを共有し、その後 VM と Docker コンテナで共有する必要がある。

[boot2docker together with VirtualBox Guest Additions — boot2docker — Lightweight Linux for Docker — Medium](https://medium.com/boot2docker-lightweight-linux-for-docker/boot2docker-together-with-virtualbox-guest-additions-da1e3ab2465c) では VirtualBox で共有を行うために必要な VirtualBox Guest Additions をインストールした boot2docker イメージが紹介されているのでここではそのイメージを利用する。

**外部から信頼できないイメージをダウンロードして利用しています。自己責任の範囲で利用してください。**

```
% sw_vers
ProductName:	Mac OS X
ProductVersion:	10.9.3
BuildVersion:	13D65
% VBoxManage -v
4.3.12r93733
% boot2docker version
Client version: v1.0.0
Git commit: 2fef7b2
```

## イメージのダウンロードからマウントまで

```bash
# イメージのダウンロード
% wget http://static.dockerfiles.io/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.iso -O ~/.boot2docker/boot2docker.iso
--2014-06-22 15:15:04--  http://static.dockerfiles.io/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.iso
Resolving static.dockerfiles.io... 205.251.242.147
Connecting to static.dockerfiles.io|205.251.242.147|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 23068672 (22M) [application/octet-stream]
Saving to: ‘boot2docker.iso’

100%[=============================================================================================>] 23,068,672  2.21MB/s   in 19s

2014-06-22 15:15:24 (1.15 MB/s) - ‘boot2docker.iso’ saved [23068672/23068672]

# ダウンロードしたイメージから VM を作成
% boot2docker init
2014/06/22 15:15:34 Creating VM boot2docker-vm...
2014/06/22 15:15:35 Apply interim patch to VM boot2docker-vm (https://www.virtualbox.org/ticket/12748)
2014/06/22 15:15:35 Setting NIC #1 to use NAT network...
2014/06/22 15:15:35 Port forwarding [ssh] tcp://127.0.0.1:2022 --> :22
2014/06/22 15:15:35 Port forwarding [docker] tcp://127.0.0.1:2375 --> :2375
2014/06/22 15:15:35 Setting NIC #2 to use host-only network "vboxnet1"...
2014/06/22 15:15:35 Setting VM storage...
2014/06/22 15:15:41 Done. Type `boot2docker up` to start the VM.
# VBoxManage を使って `/Users` マウントの設定を行う
% VBoxManage sharedfolder add boot2docker-vm -name home -hostpath /Users
# VM を起動する
% boot2docker up
2014/06/22 15:15:47 Waiting for VM to be started...
.............
2014/06/22 15:16:10 Started.
2014/06/22 15:16:10 To connect the Docker client to the Docker daemon, please set:
2014/06/22 15:16:10     export DOCKER_HOST=tcp://192.168.59.112:2375
% export DOCKER_HOST=tcp://192.168.59.112:2375
# 正しくマウントされているか確認する
% boot2docker ssh ls /Users
Shared
superbrothers
```

## `docker run -v` でボリュームを共有する

```bash
% docker pull ubuntu:latest
Pulling repository ubuntu
e54ca5efa2e9: Download complete
511136ea3c5a: Download complete
d7ac5e4f1812: Download complete
2f4b4d6a4a06: Download complete
83ff768040a0: Download complete
6c37f792ddac: Download complete
% cd ~/.boot2docker
% ls
boot2docker-vm.sock  boot2docker.iso  boot2docker.iso.bak
# `-v` オプションを使ってボリュームを共有する
% docker run -it -v `pwd`:/boot2docker ubuntu ls /boot2docker
boot2docker-vm.sock  boot2docker.iso  boot2docker.iso.bak
```