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-all のいずれか。

  • --virtualbox-no-share : ホーム・ディレクトリのマウントを無効化。

  • --virtualbox-no-dns-proxy : 全ての DNS リクエストをホスト側にプロキシしない( Boolean 値で、デフォルトは false)。

  • --virtualbox-no-vtx-check : 仮想マシンを起動する前にハードウェア仮想化が利用可能かどうかを確認。

--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

--virtualbox-no-dns-prox

VIRTUALBOX_NO_DNS_PROXY

false

--virtualbox-no-vtx-check

VIRTUALBOX_NO_VTX_CHECK

false

既知の問題

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

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