Oracle VirtualBox

VirtualBox を使い、ローカルにマシンを作成します。このドライバを使うには、ホスト上に VirtualBox 5 以上のインストールが必要です。VirtualBox 4 の場合は動作するかもしれませんが、警告が出ます。それよりも古いバージョンは実行できません。

$ docker-machine create --driver=virtualbox vbox-test

完全に新しいマシンを作成するか、Boot2Docker 仮想マシンにあるデータを変換して仮想マシンに取り込めます。Boot2Docker 仮想マシンを変換するには、以下のコマンドを実行します。

$ docker-machine create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm b2d

オプション:

  • --virtualbox-memory : ホストのメモリ容量を MB 単位で指定。
  • --virtualbox-cpu-count : 作成する仮想マシンが使う CPU 数。デフォルトは CPU 1つ。
  • --virtualbox-disk-size : ホストのディスク容量を MB 単位で指定。
  • --virtualbox-host-dns-resolver : ホスト DNS レゾルバの使用( Boolean 値で、デフォルトは false)。
  • --virtualbox-boot2docker-url : boot2docker イメージの URL を指定。デフォルトは利用可能な最新バージョン。
  • --virtualbox-import-boot2docker-vm : 取り込む Boot2Docker 仮想マシンの名前。
  • --virtualbox-hostonly-cidr : ホストオンリー・アダプタの CIDR 。
  • --virtualbox-hostonly-nictype : ホストオンリー・ネットワーク・アダプタのタイプを指定。値は 82540EM (Intel PRO/1000)、 Am79C973 (PCnet-FAST III) 、virtio-net 準仮想化ネットワーク・アダプタのいずれか。
  • --virtualbox-hostonly-nicpromisc : ホスト・オンリー・ネットワーク・アダプタのプロミスキャス・モードを指定。オプションは deny、allow-vms、allow-allo のいずれか。
  • --virtualbox-no-share : ホーム・ディレクトリのマウントを無効化。
  • --virtualbox-dns-proxy : 全ての DNS リクエストをホスト側にプロキシする( Boolean 値で、デフォルトは false)。

--virtualbox-boot2docker-url フラグには、いくつかの異なった使い方ががあります。デフォルトでは、フラグに値を何も指定しなければ、Docker Machine はローカルの boot2docker ISO を探します。もしローカル上に見つかれば、マシン作成用の ISO として用いられます。もし見つからない場合は、 boot2docker/boot2docker にある最新の ISO イメージをダウンロードし、ローカルに保存してから使います。つまり、ローカルに「キャッシュされた」boot2docker ISO を更新したい場合は、 docker-machine upgrade を実行しなくてはいけません。

これはデフォルトの挙動( --virtualbox-boot2docker-url="" を指定 )ですが、オプションで ISO を http://file:// プロトコルで指定することもサポートされています。 file:// はローカルに置かれている ISO イメージのパスを探します。例えば、 --virtualbox-boot2docker-url file://$HOME/Downloads/rc.iso を指定すると、リリース候補のダウンロード済み ISO を確認します。あるいは、 http:// 形式を使い、インターネットの ISO を直接指定できます。

ホスト・オンリー・アダプタをカスタマイズするには、 --virtualbox-hostonly-cidr フラグを使えます。ここでホスト IP を指定すると、Machine は VirtualBox DHCP サーバ・アドレスを計算( .1.25 までのサブネット上の、ランダムな IP )するので、指定したホスト IP と衝突しないようにします。また、Machine は自動的に最小 .100 ~最大 .254 までの間で DHCP を指定します。たとえば、CIDR 192.168.24.1/24 を指定すると、DHCP サーバは 192.168.24.2-25 になり、IP アドレスの範囲は最小 192.168.24.100 から最大 192.168.24.254 となります。

利用可能な環境変数とデフォルト値は以下の通りです。

コマンドライン・オプション 環境変数 デフォルト値
--virtualbox-memory VIRTUALBOX_MEMORY_SIZE 1024
--virtualbox-cpu-count VIRTUALBOX_CPU_COUNT 1
--virtualbox-disk-size VIRTUALBOX_DISK_SIZE 20000
--virtualbox-host-dns-resolver VIRTUALBOX_HOST_DNS_RESOLVER false
--virtualbox-boot2docker-url VIRTUALBOX_BOOT2DOCKER_URL 最新の boot2docker url
--virtualbox-import-boot2docker-vm VIRTUALBOX_BOOT2DOCKER_IMPORT_VM boot2docker-vm
--virtualbox-hostonly-cidr VIRTUALBOX_HOSTONLY_CIDR 192.168.99.1/24
--virtualbox-hostonly-nictype VIRTUALBOX_HOSTONLY_NIC_TYPE 82540EM
--virtualbox-hostonly-nicpromisc VIRTUALBOX_HOSTONLY_NIC_PROMISC deny
--virtualbox-no-share VIRTUALBOX_NO_SHARE false

既知の問題

Vboxfs は longstanding bug により、キャッシュされたファイル内容を提供するため sendfile(2) を引き起こします。

これにより、nginx のようなウェブ・サーバが共有ボリュームから静的ファイルを読み込むとき、問題を引き起こしがちです。開発環境では、サーバの設定で sendfile を無効化するのが良いでしょう。