Docker for Macのホストについて誤解を修正したのでメモ
rocker/rstudioを動かしていた時に、DockerfileのVOLUME指定がどこにマウントされてるのかなあ、と疑問になって誤解していたのに気付きました。
普通に立ち上げたrstudioのコンテナに対して docker inspect
叩くとマウントはこんな感じになります(抜粋)。
"Mounts": [ { "Name": "03ea6111736ad40a69f279c6cba05b5ebfc50c0454e612521766b019b5efbb0e", "Source": "/var/lib/docker/volumes/03ea6111736ad40a69f279c6cba05b5ebfc50c0454e612521766b019b5efbb0e/_data", "Destination": "/home/rstudio", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ],
で、ローカルの /var/lib/docker/volumes/
とかないんですね。
Docker for Macのホストは(厳密には)ローカルマシンではない
ちゃんとリリースノート読めよ、という感じなのですが、docker-machineでも管理下のホストがないことになってるし、linuxで使うときと同じようにネイティブで動くホストだと思ってたんですよね。だからVOLUMEでマウントされるのもローカルにそのままパスがあるところなのかと思っていました。
Docker for MacはxhyveというOS Xのネイティブハイパーバイザーでlinuxを仮想化したホストで動いています。とりあえずVirtualBoxからは脱却してますが、完全にネイティブではなく一つ仮想環境が挟まってる状態は同じなんですね。ここ、完全にネイティブだと勘違いしていました。私のちょっと時代遅れのマシンでもある程度サクサク動いてくれるので、パフォーマンスは向上してるとは思います。
このブログを参考にしてホスト環境にアクセスしてみたところ、VOLUMEでマウントされているディレクトリを確認できました。
ちなみに、KitematicではNo folder扱いです。これは、ホストの環境はあくまで一時的なものだからな?ということなのでしょうかね。永続化するデータはちゃんとコンテナ動かす時にマウントしておきましょう、という話。