AMD の CPU で Docker Toolbox 19.03 を使用する方法

はじめに

Ryzen 搭載 Win 10 Home 環境に Docker Toolbox 19.03.1 を入れて実行したところ、下記エラーが出て処理が止まりました。

Running pre-create checks...
Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"
Looks like something went wrong in step ´Checking if machine default exists´... Press any key to continue...

AMD-v (SVM) は有効になっていました。

ネットで調べてみると、どうやら Docker Toolbox に不具合があるようで、旧バージョンの 18.06.1-ce をインストールすれば解決するとの投稿をみつけました。

実際に試したところ無事動いたのですが、ただでさえ古いソフトなのに更に古いバージョンは避けたいなぁと思い、更に試行錯誤を繰り返したところ、エラーを回避して最新版を入れる方法が見つかりました。

今日は AMD の CPU (Ryzen) を用いた Windows 10 Home 環境で Docker Toolbox の最新版 19.03.1 を使用する方法をご紹介します。

OS
Windows 10 Home
Docker Toolbox
19.03.1
Git
2.9.0.windows.1
VirtualBox
6.1
目次
  1. Docker Toolbox のインストール
  2. 【解決策】docker machine を手動で作成
  3. 解決までの経緯
  4. おわりに

最新版とはいえすでに開発停止になっているソフトなので、
可能であれば Docker Desktop for Windows を使用するのがいいと思います。

1. Docker Toolbox のインストール

Docker Toolbox のインストールは、基本的にはお好みで進めていただいて大丈夫です。

ただし、特に事情がない場合は「Select Additional Tasks」のところで、
Add docker binaries to PATHにチェックを入れてください。
(デフォルトでチェック済だと思います)

Docker Toolbox のインストーラーで Git と VirtualBox も同時にインストール可能ですが、それぞれ個別に最新版をインストールするのが良いと思います。

2. 【解決策】docker machine を手動で作成

ここからが本題です。

インストール完了後、通常はデスクトップやメニューの Docker Quickstart Terminal アイコンから実行すると思いますが、今回は PowerShell を使います。
(管理者権限でなくて大丈夫です)

カレントディレクトリはどこでもいいので、下記コマンドを実行してください。

PS > docker-machine create --virtualbox-no-vtx-check -d virtualbox default
...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env toolbox

上記のようなメッセージが出たら完了で、PowerShell は閉じて OK です。

以降は Docker Quickstart Terminal アイコンから docker machine を起動できるようになります。

3. 解決までの経緯

まず旧バージョンの 18.06.1-ce で動作確認をした後に、試しに各ファイルを 19.03.1 のものに置き換えてみました。
(19.0.3.1 をアンインストールする前にコピーしておきました)

すると、その状態でも docker machine は起動し、docker -v コマンドなどが動作しました。

この結果とエラーメッセージの内容から、初期処理の docker machine ("default" 仮想環境) 構築のところで問題が起きているのかな、と推測しました。
(先に紹介した GitHub issue へのコメントでも言及されていますね)

そんな中、改めて Docker Toolbox の README.md を確認していたときに docker-machine create の記述を見て、もしかして仮想機能の確認を回避してインストールする方法があるのでは?と思いました。

docker-machine -h でヘルプを参照したところ、
最下部に docker-machine COMMAND --help のメッセージがありました。

PS > docker-machine -h
...
Run 'docker-machine COMMAND --help' for more information on a command.

それに従って docker-machine create --help を実行したところ、
--virtualbox-no-vtx-check のオプションを発見して、解決に至りました。

PS > docker-machine create --help
...
--virtualbox-no-vtx-check
    Disable checking for the availability of hardware virtualization before the vm is started [$VIRTUALBOX_NO_VTX_CHECK]
...

4. おわりに

この解決策を見つけるまでに数時間かかりましたが、その間に様々なことを学びました。

本来やりたいことが環境構築ではない場合、こういった問題が起きると焦ってしまい、何とか動くようにして終了とすることもありますよね。

しかし、落ち着いて原因を考えて試行錯誤すると、問題解決のスキルが身につくと改めて実感しました。

締切が迫っている状況などでは難しいと思いますが、後ほど余裕ができた時に改めて取り組むと良いのかなと思います。

ところで、先ほど改めて issue のスレッドを読み進めていたら、今回紹介した解決策が投稿されていたのを発見しました。

見逃していました...。