tl;dr
の通り、boot2dockerが公式にMacのファイル共有に対応したのでそちらをお試しください。
昔はこれでドヤ顔できた
$ brew install boot2docker
$ curl -L http://static.dockerfiles.io/boot2docker-v1.0.1-virtualbox-guest-additions-v4.3.12.iso > ~/.boot2docker/boot2docker-vboxfs.iso
$ boot2docker --vm=boot2docker-vm-vboxfs --iso=~/.boot2docker/boot2docker-vboxfs.iso init
$ alias boot2docker='boot2docker --vm=boot2docker-vm-vboxfs'
$ boot2docker up
$ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375
$ docker version
more...
docker
クライアントと boot2docker
を入れる
ホームブリューで良いと思う。
boot2docker.iso
を持ってくる
boot2docker
は初期化の際にベースとするisoファイルを選べるので、インターネット上にあるvboxfsが有効になったisoを持ってくる。
このisoが何者かについては https://medium.com/boot2docker-lightweight-linux-for-docker/boot2docker-together-with-virtualbox-guest-additions-da1e3ab2465c を見よ。
具体的な作り方は、 https://gist.github.com/mattes/2d0ffd027cb16571895c を参考に同じことをすれば良いらしいので、インターネットを信用しないとか、やってみたいとか、そういう場合は自分で作れば良いだろう。
init
オプションを指定。
boot2docker --vm=boot2docker-vm-vboxfs --iso=~/.boot2docker/boot2docker-vboxfs.iso init
長いのでエイリアス切る。
alias boot2docker='boot2docker --vm=boot2docker-vm-vboxfs'
あとはよくある手順
$ boot2docker up
$ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375
$ docker version
Mac → VBox のフォルダ共有
#!/bin/bash
VM_NAME=boot2docker-vm-vboxfs
WORKSPACE=`pwd`
VBoxManage sharedfolder \
add "$VM_NAME" \
--name $( basename $WORKSPACE ) \
--hostpath $WORKSPACE \
--transient
boot2docker --vm=$VM_NAME ssh \
"sudo modprobe vboxsf && sudo mkdir -p $WORKSPACE && sudo mount -t vboxsf $( basename $WORKSPACE ) $WORKSPACE"
こういう感じのスクリプトを書いておいたら捗ると思う。
--transient
オプションなので boot2docker restart
とかすればマウントも解除される。
同じ名前で共有してるのは、まあ、ややこしくなくていいかなと思ったからです。
シェアさせていただきます
上述の手順で共有設定のあとは、
docker run -d -p 22 -v ${WORKSPACE-`pwd`}:/path/to/share $IMAGE_NAME /bin/echo hello
こんな感じでプロジェクトのルートとコンテナでディレクトリ共有が可能になる。
Mac の /Users/udzura/hogehoge-puppet
↓
boot2dockerインスタンス の /Users/udzura/hogehoge-puppet
↓
コンテナの /path/to/share
という感じ(puppetなのはイメージです)。まあ、ファイル共有(-v
オプション)さえちゃんと動けば、ローカルMacでのドッカーデヴェロップメントもそれなりに捗るんじゃないでしょうか。