Docker 1.12からはわざわざこの記事のような手順を踏まなくとも、自動的にHyper-Vにmobylinuxがセットアップされるようになり、docker-machine経由でなくそのままdockerコマンドも使えるようになり便利になりました。最新版をお使いください 🐳
Docker ToolboxだとOracle VMを前提にされているため、Hyper-Vをドライバにするなら少し余計なものがインストールされすぎます。
以下のような手順でセットアップすれば最小限の環境が用意できました。また手動なら、まだToolboxに採用されていない最新やRC版などが好きに選べるメリットもあります🐳
- Windows 10 (Pro) + Hyper-V ※ Hyper-VをインストールするにはPro以上のエディションが必要です
- docker-machine v.0.7.0
- MSYS2 (20160205)
https://msys2.github.io/ からダウンロードしインストールしてください。
今回は最低限 bc
curl
md5sum
openssh
が必要で、
まだインストールしていない場合は、MSYS2 bash(mintty) を開き以下のコマンドを実行してください。
pacman -Sy --needed bc curl md5sum openssh --noconfirm
まだ鍵を作ってない場合はssh-kengen
が必要と思います。(docker-machine ssh
の過程で)
MSYS2のbashを開き、以下のコマンドを実行します。
v0.7.0 Installationには$HOME/bin
にインストールする例が書かれていますが、今回は個人的な好みで/usr/bin
にインストールしています。
パスさえ通ればどこでもよいとは思いますがお好みで便宜変更してください。
また今回は現時点での安定板v.0.7.0をダウンロードしていますが、これも便宜最新の安定板のURL、MD5に変更してください。(https://github.com/docker/machine/releases)
curl -L https://github.com/docker/machine/releases/download/v0.7.0/docker-machine-Windows-x86_64.exe \
> "/usr/bin/docker-machine.exe" && chmod +x "/usr/bin/docker-machine.exe"
echo '78941b15db71d9f80f0c56af44165828 /usr/bin/docker-machine.exe' | md5sum -c -
念のためmd5sumが正常に成功しているかをしっかり確認してください。
コマンドが正常に終了すれば docker-machine
コマンドが呼び出せるようになっているはずです。
https://msdn.microsoft.com/ja-jp/library/hh846766(v=ws.11).aspx#BKMK_CLIENT
Windowsの機能と追加から、Hyper-Vを追加し再起動してください。
docker-machineコマンドは仮想スイッチまでは自動的に用意してくれないようなので、仮想スイッチを作成します。
Hyper-VのGUIから作成するか、管理者権限でPowerShellを起動し、Get-NetAdaptor
で目的のアダプタのifindex
を特定し、New-VMSwitchで作成します。たとえば、目的のアダプタのifindex
が2
の場合は次のようにして作成します。
Get-NetAdaptor -ifIndex 2 | New-VMSwitch -Name 'vswitch' -ComputerName $env:COMPUTERNAME
MSYS2のbash(mintty)を管理者権限で開き、次のコマンドを実行します。
CPUは2つ、メモリは2GB、ディスクサイズは64GBとしています。便宜変更してください。
docker-machine create -d hyperv \
--hyperv-cpu-count 2 \
--hyperv-memory 2048 \
--hyperv-disk-size $(echo '64 * 1024' | bc) \
default
完了後、docker-machine ssh でBoot2Dockerに入ることができ、docker
コマンドが使えるようになっているはずです。
docker-machineコマンドは管理者権限のシェルで実行しないと失敗します。(machineが見つからないなどのエラーが出ます)
v.0.7.0のリリースノートには
hyperv
Machines can now be created by a non-administrator 管理者権限でなくてもマシンが作成可能になりました
などと書かれていますが、自分の環境ではだめでした・・・というより普通に考えたらそのままでは無理そうな気もします??
代替策としてユーザーをHyper-V Administrators
グループに追加することで対処しましたが、リリースノートの一文は、こういう意味ではないとは思うので、ご存知の方がいらっしゃったら・・・🐳