Vagrant・Docker・Windowsを同期

DockerをWindowsに直接インストールできない私のような貧乏人は、Vagrantの中にDockerをインストールせざるを得ません。でもDockerの中のファイルをさわるのがいちいち面倒なのでVagrant・docker・Windowsのディレクトリを同期することにしました。

Vagrant・Docker・Windowsの指定したディレクトリを同期

やりたい事のイメージはこんな感じです。

  • WindowsとVagrantの同期を行う
  • Vagrantとdockerの同期を行う

これら各々の同期を設定することでWindowsからdockerにディレクトリの同期が取れるようにしたいと思います。

バージョン情報

各バージョンは次の通りです。

  • Windows10
  • Vagrant 2.2.3
  • docker 19.03.13
  • docker image:Alpine Linux 3.12.1

VagrantとWindowsの同期

まずはVagrantとWindowsの同期から取り掛かります。

Vagrantの設定

VagrantとWindowsの同期をとる為にはVagrantfileに同期の設定を記載します。

Vagrantfileの作成

まずはVagrantfileの作成を行います。Windowsとの同期を取る為には次の設定が必要になります。

同期の為の設定の書き方

config.vm.synced_folder “Windowsのディレクトリのパス" “Vagrantのディレクトリのパス"

【例】
config.vm.synced_folder "./wd", "/vd"

Vagrantfile全体だと、次のようになります。

Vagrant.configure("2") do |config|
  
  config.vm.box = "ubuntu/bionic64"

  config.vm.network "forwarded_port", guest: 8080, host: 8080

  config.vm.network "private_network", ip: "192.168.33.10"

  config.vm.synced_folder "./wd", "/vd"

end

これでVagrantを起動すれば、VagrantとWindowsの同期は完了です。

VagrantとWindowsの同期確認

同期の確認は次のように行います。

  • Windowsでテキストファイルの作成 → Vagrantで確認・・・確認できました。
  • Vagrantでテキストファイルの作成 → Windowsで確認・・・確認できました。

Vagrantとdockerの同期

次にVagrantとdockerの同期を行います。

dockerの設定

Vagrantとdockerを同期させるにはdockerで設定が必要になります。dockerのコンテナ作成時に次のオプションを追加します。尚、今回はAlpine Linuxのイメージを使ってコンテナを作成します。

dockerイメージ取得

Alpine Linuxのイメージ取得は次の通りです。

docker pull alpine

dockerコンテナ作成

コンテナ作成はdocker runコマンドで行います。同期の為に必要なオプションは次の通りです。

同期の為のオプションの書き方

-v /vd:/dd

/vdVagrant内のディレクトリのパス
/ddコンテナ(docker)内ディレクトリのパス

VOLUME(共有ファイルシステム) Docker run リファレンス

コンテナの作成には次のコマンドを実行します。

docker run -v /vd:/dd -it --rm --name my_alpine alpine

Vagrantとdockerの同期確認

上記と同様に同期の確認を行います。

  • Vagrantでテキストファイルを作成 → dockerで確認・・・確認できました。
  • dockerでテキストファイルを作成 → Vagrantで確認・・・確認できました。

dockerとWindowsの同期確認

最後にdockerとWindowsで同期の確認を行います。

  • dockerでテキストファイルを作成 → Windowsで確認・・・確認できました。
  • Windowsでテキストファイルを作成 → dockerで確認・・・確認できました。

これでVagrant・docker・Windowsの同期は完了しました。

Vagrantdocker

Posted by Bright_Noah