座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

Linuxで動かすDocker Machine (VirtualBox) で共有フォルダを使う

WindowsのDocker Machine でホストとコンテナのデータを共有する場合, docker run コマンドなら -v オプションでホスト側のフォルダとして /c/Users を指定することになっている.

$ docker run -it -v /c/Users/sandbox/Projects/myapp:/myapp gcc

VirtualBoxの共有フォルダ機能で, ホストOSの C:\Users フォルダが Docker Machine (Dockerホスト) の /c/Users ディレクトリとして共有される形で, それが実現されている.

Linuxでは共有先ディレクトリのパスが異なる

Linux上で動かしている Docker Machine + VirtualBox の場合も同じだが, 共有先のディレクトリが異なるのでちょっと混乱する.

Docker Machineを動かしている環境の /home が, Dockerホストの /hosthome に対応するようになっている.

簡単に対応を整理するとこんな感じ?

Docker Machine 実行環境 Docker Machine 実行環境のフォルダ Docker ホストの共有先パス
Windows C:\Users /c/Users
Linux /home /hosthome

例えば, ソースが置いてある /home/sandbox/Projects/myapp ディレクトリを, コンテナと共有させたい場合は, 次のように実行することになる.

$ docker run -it -v /hosthome/sandbox/Projects/myapp:/code gcc

実はこのことをつい最近まで知らなくて, フォルダ共有が必要な場合にDocker Machineを使えなかった. まあ, LinuxデスクトップであえてDocker Machineを使う必要はないかもしれないけど, Docker Machineならroot権限が不要なので, 気楽に使えるんだよね.

広告を非表示にする