Windows10(Virtualbox/Vagrant構築済)にDockerを立てると既存VMがコケる

Windows10ホストの中に既にVirtualbox5.1.8/Vagarant1.8.6の環境がありDockerが動いていて、リモートVPSにサーバーOSも丸ごとドカンといきなりアプリケーションを立ち上げるなんて出来たら手軽で嬉しいです。

Virtualbox/Vagrantのゲストマシン達をWindowsホストに構築して、gitリポジトリも準備して、リモートの本番環境にデプロイするまでの環境構築、めんどくさい。

vagrant upも毎回時間かかるし、わがままですが便利とは思えないです。

DockerはLinux OS丸ごとコンテナになる!という事でVPSやクラウドとの親和性の高さに魅力を感じています。

KUSANAGI RoD や EC-CUBE3のDocker をあらゆるVPSやクラウドで立ち上げられる事が出来れば、大きなメリットがありますよね!なんとかしたい。

仮想化ツールには種類や相性がある

Virtualbox/Vagrantしか使ったことが無かったので、詳しく気にしたことが無かったのですが、Hyper-VとかVMwareとかホストOSとの相性や共存など、いろいろあるみたいです。

Virtualbox/Vagrantが既に立ててあるWindows10では、Docker toolboxを使う事になります。

WindowsでDockerを使う場合、ぶっつけ本番はおそらく無理。

仮想化まわりを学習してからじゃないと厳しい。

boot2dockerを理解しておく

Dcoker toolboxの同梱内にboot2dockerがあり、役割を理解する必要があります。

VirtualBoxの中にTiny Core Linux(軽量Linuxディストリビューション)をVMとして立ち上げて、その中でDockerを動かすという事になる。

DcokerはLinuxの中じゃないと動かせないのでVirtualboxにTiny Core Linuxを構築し、その中でDockerを動かす事になる。

このあたりをboot2dockerが担当する様です。

次の様に勝手に命名しました。

  • 手元のパソコンWindows10⇒Real Mother Host(RMH)
  • Dockerを動かすための仮想マシン(Tiny Core Linux)⇒Middle Virtual Host(MVH)

おそらく以下の様な感じです。認識が間違っていたら教えていただけますと助かります。

Docker on Windows10

PowerShellに標準でLinuxコマンドのエイリアスが入ってくれない限り、Cygwin必須ですね。デプロイ作業を考えるとWindowsではCygwinがシンプルで楽だと思ってます。

Real Mother HostとDocker内の作業フォルダ(ディレクトリ)共有もややこしそう。

Dockerの基本構造を理解しないまま、ぶっつけ本番でとりあえずやってみるというノリでは想像できない構図です。

どっかーんみたいな大きな名前の割にDockerの領域はこんなもんです。Virtualboxは偉大ですね。

Docker Toolboxをインストールすると、既存のVirtualBoxVMがコケる

Docker ToolboxよりダウンロードしてReal Mother Host のWindows10にインストール。

表記の通り、DockerToolbox-1.12.2をインストール。

※Install VirtualBox with NDIS5 driver (default NDIS6)にはチェックを入れてください。

NDIS6にバグがあるとかどうとかで、NDIS5を使った方がいい瞬間がどこかで出てくる感じだったかと・・・、githubかどっかにissueがあったはず・・・。

NDISはWindowsのNetwork Driver Interface Specificationです。OSI参照モデルとかデータリンクレイヤーとかも出てきます。

docker install

インストール後、確認のために、既存のVirtualbox内のVCCWのVMを起動してみると・・・。

vccw-error-after-dockertoolbox-install

Dockerを使い始める前に、既存の仮想マシン達が使えなくなるという厄介な状態。後でRepair方法紹介します。

//vagrant up がコケるRubyファイル
HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.6/plugins/providers/virtualb ox/synced_folder.rb:47:in `block in enable': undefined method `[]' for nil:NilCl ass (NoMethodError)

該当箇所のundefined methodから解き進むしかない。

ご参考にvagrant statusで見るとVCCWのVMはきちんと動いてます。

vagrant-status

ローカルホストをブラウザで開くとパーミッションで蹴られてます。

Apache Forbidden

時間がかかりそうですが、クラウド/ネットワーク/仮想化/ファイヤーウォール/その他など、多岐に学習を深めるきっかけに出来そうですね。

KUSANAGI RoD と EC-CUBE3 Docker の2つを確実にDockerで動かしてVPSにサクッと構築出来る様になりたい!

Heroku Paasみたいな感じで、500円/月クラス以下のレンタル共有サーバーにSSLも入れてボコンって出来ないかなぁ。

ローカルで仮想マシン構築してボコンって突っ込むような感じだと思う。でも、管理しにくい事が逆にリスクかも。

元からあった仮想マシン(VM)達は復活出来る

Dockerをアンインストールした後、Virtualbox/Vagrantを再インストールでRepairすると元からあった仮想マシン達は復活します。

Real Mother Host の再起動が必要でめんどくさい。

開発使いのPCでは不便過ぎる為、別のWindows10のパソコンで検証と解決を進めた方がいいですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください