Edited at

Vagrant + docker内のコンテナとVMホスト間でファイルを共有する

More than 3 years have passed since last update.

開発環境として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ツールが使えるようになった(たぶん)。めでたし。