はじめに
最近はもっぱらVS Code Remote Containersを開発環境として使っています。が、のっぴきならない事情でローカルマシンにDockerが入れられず使えない、という場合もあると思います1。
そういう場合に、WindowsのAzure Virtual MachinesにHyper-VとDocker Desktop for Windowsをインストールし、開発環境として使ってみたいと思います。
構成は以下の通りです。ローカルPCはRDP接続元としてしか使わず、Azure上のWindows 10上ですべて開発をする構成です。
※開発環境自体はリモートにあったとしても、VSCode Remote Containersを使用するにはローカルにもDockerを入れる必要があります
Azure VMでDockerは動くのか?
Azureの一部のVMは、「ネストされた仮想化」をサポートしています。
これにより、Azure VM上でHyper-Vを有効化しDocker Desktop for Windowsを動かすことが可能です。
参考:Nested Virtualization in Azure | Azure Blog and Updates | Microsoft Azure
ちなみに、AWSはおそらく不可です。Hyper-Vを有効にできませんし、そもそもWindows 10のVMを作成できません。Windows ServerにはDocker Desktop for Windowsをインストールできないので、VS Code Remote Containersが使えません。
Windows10 VMの作成方法
Azureポータルから以下の順で選択していきます。
Windows 10のイメージを選択してください。
また、サイズは以下の***が付いているものから選択してください。
参考:Azure コンピューティング ユニットの概要 - Azure Virtual Machines | Microsoft Docs
注意点
ネストされた仮想化未対応のVMでは、Docker Desktop for Windowsが以下のようなエラーを吐いて起動できません。
Docker.Core.HttpBadResponseException:
Unhandled exception: シーケンスに要素が含まれていません
対応VMは結構お高くつくので、私は毎日定時に自動でシャットダウン+グローバルIP固定設定にしています。
試してみる
作成したVMにVS CodeとDocker Desktop for Windowsをインストールし、諸々の設定を行います。
詳細は以下を参照お願いします。
参考:Developing inside a Container using Visual Studio Code Remote Development
無事VS Codeでコンテナに入ることができました。
おわりに
この結論に至るまでに色々と試行錯誤したので記しました。VS Code Remote Containersは本当に最高なので使ってみてください。
-
そんなことない?あるんです。 ↩