Windows11(WSL2)上のUbuntuにDocker EngineをインストールしてLinuxコンテナを実行してみる
前回、Windows11(WSL2)上にDocker EngineをインストールしてLinuxコンテナを実行してみましたが、本記事ではWindows11上にDoker EngineをインストールしてWindowsコンテナ実行についてまとめます。
Docker Desktop有償化について
Windows上でWindowsコンテナを実行する方法については、下記の2パータンかと思いますが、Doker Desktopが無償利用に制限があるため今回は②パターンを選択。
① WindowsにDocker Desktopをインストールして利用する
② Windows上にDocker Engineをインストール
ドキュメント
Install server and client binaries on Windows
バイナリのダウンロード
Index of win/static/stable/x86_64/
バイナリダウンロードサイトから最新版のバイナリをダウンロードします。
今回利用するのは、docker-27.0.3.zipとなります。
バイナリのインストールとサービス登録
ドキュメントを参照するとPowerShellでzipファイルの展開とインストールを進めるようです。
下記はダウンロードしたzipファイルをc:\qiita\docker\docker-27.0.3.zip
に配置してインストールした例。
なおドキュメントにある手順ではprogram files直下にファイルを展開しているため、PowerShellは管理者で実行してください。
# Program Filesにアーカイブを展開
Expand-Archive "C:\qiita\docker\docker-27.0.3.zip" -DestinationPath $Env:ProgramFiles
# サービス登録
&$Env:ProgramFiles\Docker\dockerd --register-service
# サービス起動
Start-Service docker
# サービス確認
Get-Service docker
コマンド実行後、dockerサービスが起動している事を確認できました。
なお下記のようなサービスが登録されました。
Windows機能からHyper-Vとコンテナ機能を有効化
ドキュメントに従い、dockerサービスをインストール後、dockerのhelloworldを実行した所、下記のようなエラーが発生しました。
docker: Error response from daemon: hcs::CreateComputeSystem f74c737d4e2360dc2332da72036c801d1a4d28ed4f9a928f54c78fdd6d9edbe1: The request is not supported.
調べてみると、Windows機能でHyper-Vとコンテナが無効化されていない場合や、BIOSで仮想化機能が無効化されている事が原因のようです。
確認してみると、実行端末ではどちらもDisabledとなっていました。
# Hyper-Vが有効化されているか確認(管理者実行)
Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V
# コンテナが有効化されているか確認(管理者実行)
Get-WindowsOptionalFeature -Online -FeatureName containers
上記コマンドで確認を行い、機能がDisabledの場合は下記コマンドを実行して、Hyper-Vとコンテナ機能を有効化します。
なお有効化には管理者実行が必須となり、有効化時に再起動を求められます。
# Hyper-Vを有効化(管理者実行)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All
# コンテナを有効化(管理者実行)
Enable-WindowsOptionalFeature -Online -FeatureName containers –All
helloworldイメージを実行
&$Env:ProgramFiles\Docker\docker run hello-world:nanoserver
上記コマンドにてnanoserverでhelloworldを実行しています。
初回実行時はダウンロードが発生するのでしばらく待ちます。
実行されました。
Linuxコンテナの時と同様に、どのような仕組みでterminalにhelloworldが表示されているかについて記載があります。
公式ではDocker Desktopのインストールが推奨されている
Install Docker Engine from binaries
バイナリインストールでは自動更新等がされないなど、公式としては推奨はされていないインストール方法となるようです。
(あくまでDocker Desktopを利用するのが推奨)
総評
Windows上でDocker Desktopを利用しないLinuxコンテナ実行環境構築に続き、Windowsコンテナの実行環境構築についてもまとめてみました。