質問: WindowPC内に、UNIXもしくはLINUX環境を作りたいと思っております。 DockerかVagrantでそれらをやりたいと思っておりますが、 技術的にDockerに興味があり、そちらでやるつもりです。 ただ、開発をしていくにあたりwindowsPC上でダウンロードした画像や、ファイルなどを仮想環境下に同期したいという場合が出てくるかと思います。 Vagrantなら、ファイル同期機能があるため、問題ないかと思いますが、 Dockerでもそのような機能はあるのでしょうか? ググってもでてこなかったので、もしかしてないのではと思い、質問させて頂きました。 宜しくお願いします。
回答: @hayachi617 さんの補足+αを。 Q: docker でホストとのファイル同期はあるか? A: 存在する(`-v`オプション)。 が、 docker はそもそも linux の上で実行されるプログラムであって、ホスト linux とコンテナ linux の間で同期できる、が一番問いに対する答えに近い。 Q: boot2docker でホストとのファイル同期はあるか? A: ある様子です。(結局のところ、 virtualbox の共有フォルダ + docker の `-v` で実現されていると思われる) Q: Windows で linux 開発したかったら? A: 個人的なおすすめは virtualbox + vagrant + docker です。 (boot2docker のみを仮想開発環境として扱うのは、 docker の設計的にあまりやりやすくないと思います) 以下、参考に。 Windows 上で linux 環境で開発したいという観点で見たときに: virtualbox とは何か: 仮想マシンを提供するソフトウェア。類似品に vmware。ホスト <-> 仮想マシンとの通信であったり、共有フォルダであったりも、最終的にはこのソフトウェアが機能として提供しているから可能になる。(共有フォルダは VirtualBox に対するプラグインっぽいです) vagrant とは何か: 「仮想マシンを提供するソフトウェア」に対する管理・操作を自動化してくれるソフトウェア。 Vagrantfile で宣言的に仮想マシンの構成を記述できるのが使いやすい。 docker とは何か: linux 上で動作する仮想化アプリケーション実行ソフトウェア。何かというと、仮想化されたファイルシステム+αをコンテナとして扱い、 linux カーネルはホストのものを使いながら、コンテナの文脈でプロセスを実行する。特定のプログラムの実行に特化してコンテナは構築される設計。コンテナが手元にあれば (pull してあれば)、実行は一瞬。 boot2docker とは: @hayachi617 さんが説明している通りです。