Dockerでコンテナからホストのディレクトリをマウントする

Dockerで作る仮想環境のことをコンテナというんですね。知りませんでした。恥ずかしい。

さてDockerでpersistentボリュームを使いたくて調べていました。とりあえず前回の記事で再利用可能なボリュームを定義できるようになったんですけど、このオプションが -v でした。そして、今回やりたいことはホストのディレクトリをマウントですけど、実はこれも -v オプションなんです。なんじゃそりゃ!

docker0.4.8の頃までは-bで指定していたみたいですが、どうも -b と -v まマージされたようで、同じオプションなのに違うことをやっているようです。しかもさらに混乱したのはDockerfileでVOLUMEコマンドがあるので、もちろんコマンドラインの-vと同じように指定できると思ったらこちらはバインドはできないようです。

違いは -v の引数に<container dir>とするか<host dir>:<container dir>とするかの違いのようです。ということで現状では下記のようにコマンドラインで指定すればホストのディレクトリをマウントできます。

$ sudo mkdir /host_dir # ホストにもディレクトリがないと
$ sudo echo "OK?" > /host_dir/msg # 確認用にファイルをおいておく
$ sudo docker run -v /host_dir:/container_dir base /bin/bash -c "cat /container_dir/msg"
OK?