WSL2(Windows Subsystem for Linux 2)からAzure Container Instancesを利用する方法

技術

昨今のITインフラ界隈ではコンテナ技術がよく利用されるようになってきました。仮想化技術の1つでVirtual Machineのようにハードウェアから仮想化するのではなく、OS部分は共通化して実行プログラムなどを仮想空間で実行する環境なので起動が早く、リソース消費が少なくて済みます。とはいってもサーバOSなど潤沢なリソースがある環境ではサクサク動作しますが、ノートパソコンなどの非力な環境では流石に厳しいことがあります。

そこで、非力な環境でも手軽にコンテナを扱うために「Azure Container Instances(ACI)」を使ってサーバレスにしてみます。

ACIへのアクセスは、Docker CLIを利用しますが、Windows 10のDocker CLIは「Docker Desktop」で提供されており、Docker CLIだけでインストールすることが困難です。どうせならコンテナ環境をインストールせずに使いたい!ということで少々本末転倒のような気がしますが、Linux環境ではDocker CLIだけでインストールできるのでWindows 10の機能「Windows Subsystem for Linux(wsl2)」を使います。

Windows 10にWSL2をインストール

WSL2はWSL1とは異なり、完全なLinuxカーネルで動作しています。先日「Windows 10 プレビュービルド21364から、WSL2でのGUIアプリケーション対応」と発表されたこともあり、今後も注目の機能の一つです。

WSL2のインストールは以下にも手順が記載されています。参考にしてみてください。

Windows Subsystem for Linuxの有効化

管理者として PowerShell を開き、以下を実行します。

> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

VirtualMachine機能の有効化

管理者として PowerShell を開き、以下を実行します。

> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

機器を 再起動 して WSL のインストールを完了します。

Linux カーネル更新プログラム パッケージをダウンロード

最新のパッケージをダウンロードしてインストールします。

WSL 2 を既定のバージョンとして設定

PowerShell を開き、以下を実行します。

> wsl --set-default-version 2

Linux ディストリビューションのインストール

Microsoft Store を開き、使いたいLinux ディストリビューションをインストールします。今回はUbuntuをインストールしました。

※WindowsのスタートメニューからインストールしたLinuxを初回起動すると、コンソールに1、2 分掛かると表示され、その後ユーザ名とパスワードを設定するように求められます。

以上でWSL2のインストールは完了です。powershellコンソールからwslと実行してもアクセス可能です。

Docker CLIのインストール

続いてDocker CLIをWSLにインストールしていきます。

Ubuntuパッケージ一覧を更新

$ sudo apt update

Dockerリポジトリ追加

$ sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt update

Docker CLIパッケージとCompose CLIインストール

$ sudo apt install docker-ce-cli 
$ curl -L https://raw.githubusercontent.com/docker/compose-cli/main/scripts/install/install_linux.sh | sudo sh

※Compose CLIはインストールしないとAzureへログインできませんでした。

ACIにアクセス

ACIにアクセスする準備ができました。ここからは以下にチュートリアルが掲載されています。

Azure コンテキストを作成

最初に Azure にログインします。

$ docker login azure

ブラウザが起動しますので、Azure の資格情報を入力してログインします。続いてコンテキストを作成します。

$ docker context create aci myacicontext

プロンプトが表示されたら、デプロイ先のAzure サブスクリプション ID とリソースグループを選択します。

コンテナーを作成

まず、ACI コンテキストに変更します。

$ docker context use myacicontext

次にインターネットに公開されているポート 80 を使用して Azure コンテナー インスタンスを作成します。※mcr.microsoft.com/azuredocs/aci-helloworld イメージを使用

docker run -p 80:80 mcr.microsoft.com/azuredocs/aci-helloworld

実行中のコンテナーについての詳細を取得してみます。

$ docker ps
CONTAINER ID        IMAGE                                        COMMAND             STATUS              PORTS
amazing-colden      mcr.microsoft.com/azuredocs/aci-helloworld                       Running             20.78.105.61:80->80/tcp

ブラウザーでその IP アドレスにアクセスします。 次のような Web ページが表示されたら成功です。 Docker コンテナーで実行されているアプリケーションが Azure に正常にデプロイされました。

リソースをクリーンアップ

ACIにDockerコンテナをデプロイするとその時点で課金が発生しますので、不要なコンテナは削除しておきます。

$ docker stop amazing-colden
$ docker rm amazing-colden

ACIの利用料金

最後にACIを利用したときの課金について記載しておきます。ACIは秒単位で課金がなされますので注意してください。以下に価格表がありましたので参考にしてください。

上記の方法で非力な環境しかない場合でもWSL+ACIでコンテナを気軽に試すことができます!開発等で利用するには便利ですね。

タイトルとURLをコピーしました