Windows 上で VMWare を DockerMachine にして Docker を使う
Windows 上でDocker を使うには Docker For Windows を使うのが一番簡単で、なおかつ Windows コンテナも使えるのだが個人的な都合で VMWare を使いたいので設定メモ
手順
-
VMWare をインストール
-
DockerToolbox をインストール
コマンドラインから、引数を付けて起動すれば、Virtual Box を入れないように出来る
DockerToolbox /COMPONENTS="Docker,DockerMachine
-
VMWare用の docker-machine-driverを追加
docker-machine-driver-vmwareworkstation.exe を DockerToolbox のインストールフォルダにコピーする
スクリプトは修正しなくていい。
docker-machine-driver-vmwareworkstation の ReadMe にVMWare 用に修正されたスクリプトも用意されているが、こちらは起動のたびにVMを作り直すなど常用しづらい。 環境は別途用意する。 -
default VM の作成
docker-machine create --driver=vmwareworkstation default
この時、VMWare のネットワークアダプタとして NAT がないと作成に失敗する。
アダプタの構成を変えてしまっている場合など一度デフォルトに戻して作成したほうが安全。作成後にネットワークの構成を変更してもDHCPでIPが取れる環境であれば問題ない。 -
vmx ファイルの修正
VMWare では標準的に作成される VM は、ログ、メモリの状態などディスクへのアクセスが常時発生、VM側のメモリも勝手に調整するとか異常に重い設定になっていて使いずらいので修正する。
対象のファイルは%USERPROFILE%\.docker\machine\machines\default\default.vmx
ファイルをテキストエディタで開いて、末尾に追加する。この修正は、VM を終了した状態で修正する。
VM が起きているときにファイルを修正した場合は、VM 終了時に元の設定に戻される。
MemTrimRate = "0" mainMem.useNamedFile= "FALSE" sched.mem.pshare.enable = "FALSE" prefvmx.useRecommendedLockedMemSize = "TRUE" MemAllowAutoScaleDown = "FALSE" logging = "FALSE"
-
実行環境
標準のスクリプトでは、msys や git for windows の bash を使うようになってになっている。
PowerShell を使ったほうが快適なので PowerShell 用の環境にする- Docker for Powershell のインストール
Register-PSRepository -Name DockerPS-Dev -SourceLocation https://ci.appveyor.com/nuget/docker-powershell-dev Install-Module -Name Docker -Repository DockerPS-Dev -Scope CurrentUser
-
Docker VM の起動は、PowerShell に特別用意されているわけではないので
docker-machine start
-
Docker VM が動いている状態で
docker-machine.exe env | Invoke-Expression
docker コマンドのかなりの部分は Cmdlet が用意されてるようだが完全ではない。docker コマンドも使う
- Docker for Powershell のインストール