

WindowPC内に、UNIXもしくはLINUX環境を作りたいと思っております。

DockerかVagrantでそれらをやりたいと思っておりますが、  
技術的にDockerに興味があり、そちらでやるつもりです。

ただ、開発をしていくにあたりwindowsPC上でダウンロードした画像や、ファイルなどを仮想環境下に同期したいという場合が出てくるかと思います。

Vagrantなら、ファイル同期機能があるため、問題ないかと思いますが、  
Dockerでもそのような機能はあるのでしょうか？

ググってもでてこなかったので、もしかしてないのではと思い、質問させて頂きました。

宜しくお願いします。


CC BY-SA 3.0
2016-02-23T05:38:46.553
22423
2019-12-31T13:25:54.117
2016-02-23T17:15:21.397
754
13175
question
vagrant docker virtualbox
DockerでVagrantにある、いわゆるファイル同期機能のような機能はできますか？


まずWinPC上にLinux(Unix?)とのことですが、その構成自体はDockerやVagrantではなく、VirtualboxやHyperVで実現することかと思います。  
Dockerは直接Windows上では稼働できません（Boot2Dockerという、VirtualBoxを使って疑似的にWindows上でDockerを使うツールはあるようです）。

で、VirtualBoxはフォルダ共有機能を持っています（Vagrantのフォルダ共有も基本はこの機能を使っているみたいです）。なので、ファイルを共有されたいとう目的であれば、VirtualBoxで構築すれば、解決はするかと思います。


CC BY-SA 3.0
2016-02-23T12:10:43.530
22436
2016-02-23T12:10:43.530
14479
22423
answer


@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 さんが説明している通りです。


CC BY-SA 3.0
2016-02-23T17:14:40.237
22449
2016-02-23T17:14:40.237
754
22423
answer


> WindowPC内に、UNIXもしくはLINUX環境を作りたいと思っております。

今は2019年12月31日です。  
Win10でWSLを有効化すると、比較的簡単にLINUX環境を使うことができます。  
Win10側では、WSLのファイルシステムを以下のパスで読み書きできます。

[code]

    \\wsl$\Ubuntu-18.04\home\XXXXX
    
    ドライブを割り当てて使うのが楽です。※この例ではSドライブ
    subst S: \\wsl$\Ubuntu-18.04\home\XXXXX
    
[/code]

WSLからもWin10のファイルシステムが読み書きできます。  
/mntの下に各ドライブがマウントされています。

以下はWSLで動かしている`Ubuntu`です。

[code]

    $ cat /etc/os-release
    NAME="Ubuntu"
    VERSION="18.04.3 LTS (Bionic Beaver)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 18.04.3 LTS"
    VERSION_ID="18.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=bionic
    UBUNTU_CODENAME=bionic
    
[/code]

`ubuntu`でできる大概のことは`WSL`でもできます。  
普段は私もVirtualBoxでVM(CentOS)で色々試していますが、メモリはそれなりに必要です。

WSL2も使えるようですが、試していません。


CC BY-SA 4.0
2019-12-31T13:25:54.117
61916
2019-12-31T13:25:54.117
35558
22423
answer