Skip to content

Instantly share code, notes, and snippets.

@retorillo
Last active June 20, 2016 18:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save retorillo/9d1adc489053525c3799425c09e68188 to your computer and use it in GitHub Desktop.
Save retorillo/9d1adc489053525c3799425c09e68188 to your computer and use it in GitHub Desktop.
Docker Toolbox とVirtualBoxをインストールせずに、Hyper-V x Docker Machine x MSYS2 で用意する手順

Docker Toolbox とVirtualBoxをインストールせずに、Hyper-V x Docker Machine x MSYS2 で用意する手順

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)

MSYS2のインストールと必要なパッケージ

https://msys2.github.io/ からダウンロードしインストールしてください。

今回は最低限 bc curl md5sum openssh が必要で、 まだインストールしていない場合は、MSYS2 bash(mintty) を開き以下のコマンドを実行してください。

pacman -Sy --needed bc curl md5sum openssh --noconfirm

まだ鍵を作ってない場合はssh-kengenが必要と思います。(docker-machine sshの過程で)

Docker Machineのインストール

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 コマンドが呼び出せるようになっているはずです。

Hyper-Vのインストール

https://msdn.microsoft.com/ja-jp/library/hh846766(v=ws.11).aspx#BKMK_CLIENT

Windowsの機能と追加から、Hyper-Vを追加し再起動してください。

Hyper-Vで仮想スイッチの作成

docker-machineコマンドは仮想スイッチまでは自動的に用意してくれないようなので、仮想スイッチを作成します。

Hyper-VのGUIから作成するか、管理者権限でPowerShellを起動し、Get-NetAdaptorで目的のアダプタのifindexを特定し、New-VMSwitchで作成します。たとえば、目的のアダプタのifindex2の場合は次のようにして作成します。

Get-NetAdaptor -ifIndex 2 | New-VMSwitch -Name 'vswitch' -ComputerName $env:COMPUTERNAME

docker-machineコマンドで仮想マシンを作る

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コマンドが使えるようになっているはずです。

ユーザーをHyper-V Administratorsグループに追加する(オプション)

docker-machineコマンドは管理者権限のシェルで実行しないと失敗します。(machineが見つからないなどのエラーが出ます)

v.0.7.0のリリースノートには

hyperv Machines can now be created by a non-administrator 管理者権限でなくてもマシンが作成可能になりました

などと書かれていますが、自分の環境ではだめでした・・・というより普通に考えたらそのままでは無理そうな気もします??

代替策としてユーザーをHyper-V Administratorsグループに追加することで対処しましたが、リリースノートの一文は、こういう意味ではないとは思うので、ご存知の方がいらっしゃったら・・・🐳

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment