この投稿は古い内容です。Docker 1.3からはboot2dockerを利用していても何も考えずにホストマシンのボリュームをマウントできるようです。
boot2dockerでのVolume問題が解決しそう | SOTA
OSXやWindowsからdockerを利用する場合にはboot2dockerを利用します。しかし、boot2dockerがVirtualboxで動作する仮想マシンであるため、docker run
の際、-v
オプションでホストのディレクトリをマウントさせようとしても、boot2docker内のディレクトリを参照してしまうため、うまく行きません。
boot2dockerのアップデートでその辺りに対応をしたので、方法のメモ。
手順
boot2docker#folder-sharingの情報です。
どうやら、samba
サーバーとなるコンテナを動作させてsambaの共有フォルダをOSXやWindowsからマウントする方法を取るようです。
$ docker run -v /data --name my-data busybox
$ docker run --rm -v /usr/local/bin/docker:/docker -v /var/run/docker.sock:/docker.sock svendowideit/samba my-data
$ boot2docker ip
192.168.59.103
$ docker ps
4aac758ea300 svendowideit/samba:latest /setup.sh --start my About an hour ago Up About an hour 0.0.0.0:137->137/tcp, 0.0.0.0:138->138/tcp, 0.0.0.0:139->139/tcp, 0.0.0.0:445->445/tcp samba-server
svedowideit/samba
なるコンテナが動作していることを確認したら、OSXの場合はfinderからcifs://192.168.59.103
へ、Windowsの場合はExplorerから//192.168.59.103
に接続します。
/data
ディレクトリをGuestでマウントします。
OSXなら/Volumes/data
、Windowsなら//192.168.59.103/data
に置いたファイルを他のDockerコンテナから参照できるようになりました。
他のDockerコンテナからファイルを参照する際には、コンテナ起動時に
$ docker run --volumes-from my-data centos su -
のように--volumes-from
を指定してあげると良いようです。
これは便利。