前回の記事 DockerコンテナからAzure PowerShellを実行する は、ローカル環境のDockerコンテナから
Azure PowerShellを実行しました。
今回はAzureのコンテナサービス Azure Container Instances(ACI) を使ってみます。
コンテナの作成
情報を入力していきます。
基本
イメージはDocker HubのAzure Powershellを使用します。
Azure Container Registry等、自分で作成したコンテナの利用も可能ですね。
ネットワーク
今回はコンテナを仮想ネットワーク内に配置します。
サブネットはACI専用のものが必要になります 1 ので空のサブネットを用意してください。
詳細
コマンドのオーバーライドに[ "tail", "-f", "/dev/null" ]
を入れます。
これがないとコンテナ起動後すぐにプロセスが落ちてコンテナも停止します。
ここ大分ハマりました…。
プロセスが停止しないコマンドなら他の物でも大丈夫な気がします。試していませんが…
上記入力完了後、作成ボタンを押下してコンテナを作成します。
デプロイは数分程度掛かります。
…
……
………
コンテナにアクセスしてみる
Azureポータルからコンソール接続できます。
設定 -> コンテナー -> 接続タブで使用するコマンドを選択しConnect。
コマンドはpwsh
と入力することでPowerShellが使えます。
ローカルのターミナルからアクセスしてみる
ローカルのターミナルからアクセスするにはAzure CLIを使用します。
Azure PowerShellは、アクセス可能なコマンドがないので無理そうです。
この為に普段使わないAzure CLIをインストールしました。
Azure PowerShellのACIコマンドレット
Azureのログイン。
Azure PowerShellと同様に表示されるURLにブラウザでアクセスし認証コードを入力します。
az login
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code xxxxxxxxx to authenticate.
ログインアカウントが複数サブスクリプションに紐づいている場合は、ACIを作成したサブスクリプションを選択してください。
サブスクリプションの一覧はaz account list
で出せます。
az account set -s <サブスクリプションID>
az container exec
コマンドでコンテナにアクセスします。
オプションで高さと幅を指定しています。
デフォルトで高さ200、幅80となっており、このサイズが小さいとターミナルで正しく表示できないため、大きめに指定する必要があります。
az container exec --resource-group <リソースグループ名> --name <ACI名> --exec-command "pwsh" --terminal-col-size 1000 --terminal-row-size 1000
PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/powershell
PS /> help' to get help.
PS />
終わりに
これでサーバーレス(Cloud Shellを除く)でAzure PowerShell実行環境を作ることが出来ました。
ジョブスケジューラと上手く連携出来たら運用で使えそうです。