今回は Dynamics 365 Business Central のコンテナをHyper-V仮想マシン上に展開する方法を説明します。前回の記事ではHyper-Vの仮想マシンにDocker Desktopをインストールする方法を書きました。前回の記事のニーズが100だとすると今回の記事のニーズは3くらいですかね。まだまだ日本では知名度が低い製品なので仕方ないです。本当にやりたいのはDockerDesktopなしでBCのコンテナ作ることですが、それは次回に。
前提:Docker DesktopをインストールしたHyper-V仮想マシン。Windowsコンテナモードにスイッチ済。
前回の記事で少し書きましたが物理マシンにDockerをインストールすると使っている内に次第に重くなって削除が面倒だからです。仮想マシンなら検証が終わったらコンテナ捨てて仮想マシンのチェックポイントでDockerインストール済の時点まで戻れるからです。
ちなみに仮想マシンでなくても同じ手順でBCコンテナは作れます。
手順
Docker Desktop起動後、Windowsコンテナモードになっていることを確認する。下図のように「Switch to Linux container」と表示されていればOK。(ここで選択しないこと。選択するとLinuxコンテナモードに切り替わってしまう。)
![](/wp-content/uploads/2022/01/01_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Microsoft 公式の手順に沿って進める。(ただし、前半の手順は失敗する。)
Running a Container-Based Development Environment – Business Central | Microsoft Docs
コマンドプロンプトを管理者モードで起動する。
![](/wp-content/uploads/2022/01/02_Create-BCContainer-on-HyperV-Machine-1024x670.png)
「はい」を選択。
![](/wp-content/uploads/2022/01/03_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Docsの「Using Docker commands」セクションに「以下のPowerShellコマンドを打て。ただしバージョンは適宜修正のこと。」と記述されている。
![](/wp-content/uploads/2022/01/04_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Windowsのバージョンを確認する。この仮想マシンにはWindows10 21H2の19044.1415がインストールされている。なので、「19041.329」の部分を「19044.1415」に打ち換えればよいハズ・・・だが10.0の部分が表示されていないので一抹の不安を覚える。(多分大丈夫だとは思うのだが)
![](/wp-content/uploads/2022/01/05_Create-BCContainer-on-HyperV-Machine-1024x670.png)
と思ったら意外なところに答えがあった。コマンドプロンプトの一番上に「Windows Version 10.0.19044.1415」と書いてある。
![](/wp-content/uploads/2022/01/06_Create-BCContainer-on-HyperV-Machine-1-1024x670.png)
ということで10.0.19044.1415に置き換えてコマンド実行。
![](/wp-content/uploads/2022/01/07_Create-BCContainer-on-HyperV-Machine-1024x670.png)
失敗する。「10.0.19044.1415を対象とするマニフェストがない」と言われている。
![](/wp-content/uploads/2022/01/08_Create-BCContainer-on-HyperV-Machine-1024x670.png)
この仮想マシンにインストールしたOSは以下のバージョン。これを手掛かりにして、、
![](/wp-content/uploads/2022/01/09_Create-BCContainer-on-HyperV-Machine-1024x667.png)
こんな感じでググるとOSのビルド番号がヒットする。
![](/wp-content/uploads/2022/01/10_Create-BCContainer-on-HyperV-Machine-1024x670.png)
19041.1415、 19042.1415、 19043.1415、 19044.1415、 は1つのまとまりになっている。この場合、Manufestは最も若い番号で作成されているらしい。
![](/wp-content/uploads/2022/01/11_Create-BCContainer-on-HyperV-Machine-1024x670.png)
ということで10.0.19041.1415で実行する。
![](/wp-content/uploads/2022/01/12_Create-BCContainer-on-HyperV-Machine-1024x670.png)
マニフェストが見つかり、処理が進み始める。
![](/wp-content/uploads/2022/01/13_Create-BCContainer-on-HyperV-Machine-1024x670.png)
無事に完了。Docker DesktopでImagesタブを見ると指定したビルド番号のイメージが存在することがわかる。
![](/wp-content/uploads/2022/01/14_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Docsに戻って続きを見ると、「以下のコマンドを実行せよ、ただしバージョンは適宜修正のこと」とある。
docker run -e accept_eula=Y -m 4G -e artifacturl=https://bcartifacts.azureedge.net/sandbox/16.3.14085.14363/us mcr.microsoft.com/businesscentral:10.0.19041.329
![](/wp-content/uploads/2022/01/15_Create-BCContainer-on-HyperV-Machine-1024x670.png)
OSビルド番号を修正してコマンド実行。
![](/wp-content/uploads/2022/01/16_Create-BCContainer-on-HyperV-Machine-1024x670.png)
エラーになる。。いろいろ調べたが原因は分からず。。
![](/wp-content/uploads/2022/01/17_Create-BCContainer-on-HyperV-Machine-1024x670.png)
ということで、Docsに紹介されている2つ目の方法、BCContainerHelperを試す。その前に不要なコンテナを削除する。Docker Desktopでコンテナタブを確認すると見覚えのないコンテナができている。これを削除する。
![](/wp-content/uploads/2022/01/18_Create-BCContainer-on-HyperV-Machine-1024x670.png)
削除する。
![](/wp-content/uploads/2022/01/19_Create-BCContainer-on-HyperV-Machine-1024x670.png)
コンテナがなくなった。
![](/wp-content/uploads/2022/01/20_Create-BCContainer-on-HyperV-Machine-1024x670.png)
イメージはそのまま残しておく。
![](/wp-content/uploads/2022/01/21_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Docs文書に戻り、Using the BCContainerHelper PowerShell moduleのセクションを参照すると、 以下のコマンドを実行して BCContainerHelperをインストールする、と記述されている。これをインストールすると簡単にBCコンテナが作れる。
Install-module BCContainerHelper -force
![](/wp-content/uploads/2022/01/22_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Yesを選択。
![](/wp-content/uploads/2022/01/23_Create-BCContainer-on-HyperV-Machine-1024x670.png)
インストールが完了した。
![](/wp-content/uploads/2022/01/24_Create-BCContainer-on-HyperV-Machine-1024x670.png)
インストールしたら以下のコマンドを打って、BCContainerHelperのコマンドを照会する、とDocsに書いてあるが、、
Write-BCContainerHelperWelcomeText
![](/wp-content/uploads/2022/01/25_Create-BCContainer-on-HyperV-Machine-1024x670.png)
エラーになる。
![](/wp-content/uploads/2022/01/26_Create-BCContainer-on-HyperV-Machine-1024x670.png)
これは実行ポリシー設定が不足しているため。以下のコマンドを打つ。
get-ExecutionPolicy -list
すると実行ポリシーが照会できる。5行ともUndefinedになっている。
![](/wp-content/uploads/2022/01/27_Create-BCContainer-on-HyperV-Machine-1024x670.png)
以下のコマンドを打って実行ポリシーを変更する。
set-ExecutionPolicy -ExecutionPlicy Bypass -Scope CurrentUser
![](/wp-content/uploads/2022/01/28_Create-BCContainer-on-HyperV-Machine-1024x670.png)
改めて以下のコマンドを打って変更されたか確認する。
get-ExecutionPolicy -list
![](/wp-content/uploads/2022/01/29_Create-BCContainer-on-HyperV-Machine-1024x670.png)
再度、以下のコマンドを打って、BCContainerHelperのコマンドをリストする。
Write-BCContainerHelperWelcomeText
![](/wp-content/uploads/2022/01/30_Create-BCContainer-on-HyperV-Machine-1024x670.png)
コマンド群が表示された。OK
![](/wp-content/uploads/2022/01/31_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Docsの説明に従って続ける。以下のコマンドを入力せよ、とのこと。DocsからKぴーしてそのままPowerShellのコマンドラインに貼り付ければOK
$artifactUrl = Get-BcArtifactUrl -type sandbox -country us -select Latest
New-BCContainer -accept_eula -containerName mysandbox -artifactUrl $artifactUrl
![](/wp-content/uploads/2022/01/32_Create-BCContainer-on-HyperV-Machine-1024x670.png)
クレデンシャルを求められる。この仮想マシンにサインインしているユーザーIDとPasswordを入力する。
![](/wp-content/uploads/2022/01/33_Create-BCContainer-on-HyperV-Machine-1024x670.png)
コンテナ作成処理が走る。
![](/wp-content/uploads/2022/01/34_Create-BCContainer-on-HyperV-Machine-1024x670.png)
完了するとデスクトップにショートカットが3つ作られる。
![](/wp-content/uploads/2022/01/35_Create-BCContainer-on-HyperV-Machine-1024x670.png)
IEのアイコンのショートカットをクリックする。
![](/wp-content/uploads/2022/01/36_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Edgeが起動し、BCが表示された。成功!
![](/wp-content/uploads/2022/01/37_Create-BCContainer-on-HyperV-Machine-1024x670.png)
Docker DesktopのImageを確認する。先にダウンロードしたイメージがInUseになっている。
![](/wp-content/uploads/2022/01/38_Create-BCContainer-on-HyperV-Machine-1024x670.png)
BCのコンテナが作られていることがわかる。
![](/wp-content/uploads/2022/01/39_Create-BCContainer-on-HyperV-Machine-1024x670.png)
仮想マインを停止し、ここでチェックポイントを取っておくとよい。いつでもここに立ち返れる。(最初に取ったほうがよかったかもw)
![](/wp-content/uploads/2022/01/40_Create-BCContainer-on-HyperV-Machine-1024x667.png)
チェックポイントが生成された。
![](/wp-content/uploads/2022/01/41_Create-BCContainer-on-HyperV-Machine-1024x667.png)
一つ目の方法のエラーを取り除けなかったのは残念ですが、BCContainerHelperを使うと非常に簡単にBCコンテナが作成できることが分かったと思います。
次回はDocker DesktopなしでBCコンテナを作成する方法を説明します。