開発環境としてdockerコンテナを使うためにVagrantと組み合わせているんだけど、開発にはIDEなどを使いたいというとき、Vagrantのsynced folder機能とdockerのvolume機能を組み合わせることで、dockerコンテナ内のファイルを共有化してVMのホストからアクセスすることができる。
以下はVagrantでCoreOSのVMを立ち上げて、その中でubuntuイメージを利用した場合なので、適宜記述を読み替えて欲しい。
手順
まず、Vagrantfileに以下の記述を行う。
config.vm.synced_folder "./share", "/home/core/share"
これでvagrant up
すれば、VM内の/home/core/share
がVMのホストの./share
にマウントされる。
次にVM=dockerのホスト側で以下のコマンドを実行。
docker run -v /home/core/share:/home/app/share -t ubuntu /bin/bash
これでdockerコンテナの/home/app/share
がVM=dockerホストの/home/core/share
にマウントされる。かくして、VMホスト <-> dockerホスト <-> dockerコンテナ間でファイルが共有化され、IntellijでもSourceTreeでも、お好きなGUIツールが使えるようになった(たぶん)。めでたし。