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 を無効化するのが良いでしょう。