Azure App Serviceでカスタムコンテナーを動かす場合、2026年4月更新の「Quickstart: Run a Custom Container on App Service」で最も見るべきポイントは、派手な新機能ではなく、手順の正確性と実務でつまずきやすい箇所の整理です。特に、Windows/Linuxの選択、Azure Container Registryとの接続、ポート設定、起動ログ、マネージドIDによるイメージ取得は、検証段階から確認しておくべきです。
Microsoft Learnの対象ページは、Azure App Serviceでカスタムコンテナーを実行する方法を説明するクイックスタートです。公式リポジトリ上のメタデータでは ms.date が2026年4月20日、GitHub履歴では2026年4月21日の「Refresh article」コミットが確認できます。2026年4月24日付の更新情報として社内共有する場合でも、一次情報としては「2026年4月下旬更新」または「Microsoft Learn上の更新表示は2026年4月20日」と併記すると安全です。(GitHub)
Azureの最新動向: Quickstart: Run a Custom Container on App Serviceで何が変わったか
今回の更新は、Azure App Serviceのカスタムコンテナー利用を「初回検証から本番準備へつなげやすくする」ための整備と見るのが実務的です。対象ページは、Azure Container RegistryからAzure App Serviceへコンテナーイメージをデプロイする手順を中心に、Windows、Linux、Visual Studio、Visual Studio Code、Azure Portal、PowerShell、Azure CLIの複数ルートを扱っています。(Microsoft Learn)
| 観点 | 2026年4月更新で確認すべきポイント | 実務への影響 |
|---|---|---|
| 更新範囲 | GitHub上では10ファイルの変更、47行追加・52行削除の「Refresh article」として記録されています。(GitHub) | 大規模な機能追加というより、既存手順の誤解や古い表記を減らす更新と捉えるべきです。 |
| WindowsコンテナーのPortal手順 | Windows向け手順で、OS選択がLinuxではなくWindows、イメージ選択が dotnetcore-docs-hello-world-windows へ修正されています。(GitHub) | IT管理者が検証環境を作る際、OSとイメージの不一致による起動失敗を避けやすくなります。 |
| Visual Studio手順 | 前提条件の表記がDocker Desktop for Windowsへ明確化され、Azure Container Registryのイメージ指定ではDocker HubではなくOther container registriesを選ぶ形に修正されています。(GitHub) | 古いUIや旧称に引っ張られず、現在のAzure Portal/開発環境に合わせて操作できます。 |
| CLI/PowerShell手順 | Webアプリ名の例が固定名ではなく <your-container-app> のようなプレースホルダーに整理され、コピーペースト時の名前重複を避けやすくなっています。(GitHub) | 自社の命名規則に合わせて、検証用スクリプトを本番向けIaCや運用スクリプトへ展開しやすくなります。 |
| 運用関連リンク | Azure Monitor、App Serviceの監視、Private Endpointなど、関連コンテンツのリンクが更新されています。(GitHub) | 「デプロイできた」で終わらせず、監視・ネットワーク・認証まで確認する導線が明確になります。 |
Azure App Serviceでカスタムコンテナーを使う意味
Azure App Serviceのカスタムコンテナーは、通常の組み込みランタイムでは足りないWebアプリやAPIを、独自のDockerイメージで動かしたいときに有効です。App Service on Linuxには.NET、Java、Node.js、PHPなどの定義済みスタックがありますが、定義済みスタックにない構成でもカスタムDockerイメージを使えば実行できます。Windowsコンテナーでは、事前構成されたスタックでは制限される低レベルなOS機能へのアクセスが必要なケースにも対応しやすくなります。(Microsoft Learn)
実務では、次のような場面で検討価値があります。
| 使うべきケース | 具体例 |
|---|---|
| 既存Webアプリを大きく作り替えずにAzureへ移したい | .NET Framework/IISベースのアプリをWindowsコンテナー化して段階的に移行する |
| 標準ランタイムでは不足する依存関係がある | 特定のOSパッケージ、独自ライブラリ、社内標準のミドルウェアを含めたい |
| Kubernetesほどの運用負荷は必要ない | 単体のWebアプリ、管理画面、APIをPaaS寄りに運用したい |
| 開発チームの成果物をイメージ単位で統一したい | ローカル、検証、本番で同じコンテナーイメージを使い、差分を減らしたい |
一方で、マイクロサービスをサーバーレス寄りに動かしたい場合はAzure Container Apps、Kubernetes前提の高度なオーケストレーションが必要な場合はAKSも候補になります。Azure Container Appsはマイクロサービスやコンテナー化アプリをサーバーレス基盤で実行するサービスとして説明されており、AKSはコンテナー化アプリのデプロイと管理に使うマネージドKubernetesサービスです。(Microsoft Learn)
まず決めるべき設計ポイント
LinuxコンテナーかWindowsコンテナーか
新規のWebアプリやOSS系スタックなら、まずLinuxコンテナーを検討するのが自然です。軽量に始めやすく、Node.js、Python、Java、.NETなどの一般的なWebアプリと相性が良いからです。
一方、.NET Framework、IIS、Windows固有API、既存Windowsサーバー資産を前提にしている場合は、Windowsコンテナーが候補になります。Microsoftの構成ドキュメントでも、.NET FrameworkアプリにはWindows Server Long-Term Servicing Channelベースの親イメージを使う考え方が示されています。(Microsoft Learn)
注意したいのは起動時間です。Windowsコンテナーはイメージサイズや親イメージの状態によって起動に時間がかかることがあります。Quickstartでも、Windowsコンテナーの起動状況を確認するために https://<app_name>.scm.azurewebsites.net/api/logstream のログストリームを見る手順が紹介されています。(Microsoft Learn)
レジストリはAzure Container Registryを基本にする
QuickstartではAzure Container Registryを使う流れが中心です。検証では手順を簡単にするため、レジストリのAdmin Userを有効化する説明が出てくる場合がありますが、本番運用ではマネージドIDでApp ServiceからACRへPullする構成を優先して検討すべきです。Microsoftの構成ドキュメントでは、WindowsコンテナーのイメージPull認証でサービスプリンシパルはサポートされなくなっており、Windows/Linuxの両方でマネージドIDの利用が推奨されています。(Microsoft Learn)
最小限の考え方は次の通りです。
| 環境 | 認証方式の考え方 |
|---|---|
| 個人検証・短期デモ | Quickstart通りに進めてもよい。ただし終了後はリソースを削除する |
| 社内PoC | ACR、App Service、マネージドID、AcrPullロールをセットで確認する |
| 本番 | 管理者ユーザーや固定パスワードに依存せず、マネージドIDとRBACを基本にする |
ポート番号はデプロイ前に確認する
App Serviceは、既定ではカスタムコンテナーがポート80で待ち受ける前提で扱います。アプリが8080や8000など別のポートで待ち受ける場合は、WEBSITES_PORT をApp Serviceのアプリ設定に入れる必要があります。また、App ServiceのカスタムコンテナーではHTTPリクエスト用に公開できるポートは1つです。(Microsoft Learn)
az webapp config appsettings set \
--resource-group <group-name> \
--name <app-name> \
--settings WEBSITES_PORT=8080
「ローカルでは動いたのにAzureでは応答しない」という失敗は、ポート設定の不一致が原因になりやすいです。Dockerfileの EXPOSE、アプリ側の待ち受けポート、App Serviceの WEBSITES_PORT を同じ設計として確認しましょう。
ログ確認を最初から手順に入れる
App ServiceではDockerホスト側のログは既定で有効ですが、コンテナー内アプリケーションのログやWebサーバーログは手動で有効化が必要です。ログはAzure Portal、Kudu、Kudu API、Azure Monitorなどから確認できます。(Microsoft Learn)
CLIで確認する場合は、次の流れを検証手順に入れておくとトラブル対応が速くなります。
az webapp log config \
--name <app-name> \
--resource-group <resource-group-name> \
--docker-container-logging filesystem
az webapp log tail \
--name <app-name> \
--resource-group <resource-group-name>
コンテナーのPullに失敗しているのか、起動はしたがHTTPヘルスチェックに応答していないのか、アプリ内部で例外が出ているのかを切り分けるには、ログを見ずにPortalの状態表示だけで判断しないことが重要です。
IT管理者・プロダクトオーナーが見るべき判断基準
IT管理者は「動くか」より「運用できるか」を見る
IT管理者がAzure App Serviceのカスタムコンテナーを評価する場合、初回デプロイの成功だけで判断しない方がよいです。次の項目を検証環境で確認してから、社内標準の手順に落とし込みましょう。
| 確認項目 | 見るべきポイント |
|---|---|
| 認証 | App ServiceのマネージドIDにACRのAcrPull権限を付与できているか |
| ネットワーク | Private Endpoint付きACRやVNet統合が必要か |
| ログ | 起動ログ、アプリログ、Azure Monitor連携を確認できるか |
| 更新 | 新しいイメージをPushした後、再起動やデプロイフローで反映できるか |
| 削除 | 検証用リソースグループを安全に削除できるか |
ネットワークで保護されたレジストリからイメージをPullする場合、App ServiceのVNet統合やDNS解決、vnetImagePullEnabled の設定も検討が必要です。(Microsoft Learn)
プロダクトオーナーは「AKSが必要か」を先に決める
プロダクトオーナー視点では、最初からAKSを選ぶべきか、App Serviceで十分かを判断することが重要です。単一のWebアプリやAPIを早く公開し、インフラ運用を軽くしたいならApp Serviceのカスタムコンテナーは有力です。複数サービス間の細かな通信制御、Kubernetesネイティブな運用、プラットフォームチームによる標準化が必要ならAKSを検討します。
| 選択肢 | 向いている用途 | 避けたい使い方 |
|---|---|---|
| App Service カスタムコンテナー | Webアプリ、API、管理画面、既存アプリ移行 | 複雑なコンテナーオーケストレーションを無理に載せる |
| Azure Container Apps | サーバーレス寄りのコンテナー化アプリ、マイクロサービス | App Service前提の既存Web運用をそのまま移すだけのケース |
| AKS | Kubernetes標準の運用、複数サービス、高度なスケーリングやDevOps連携 | Kubernetes運用体制がない小規模Webアプリ |
この判断を誤ると、技術的には動いても、運用コストやリリース速度で損をします。まずは「必要な自由度」と「運用できる体制」のバランスで選びましょう。
Quickstartを実務で使う手順
Quickstartは学習用の手順ですが、そのまま本番環境へコピーするものではありません。社内で使う場合は、次の順序で実務向けに変換すると失敗が少なくなります。
| 手順 | 実施内容 | 実務での注意点 |
|---|---|---|
| 検証ルートを選ぶ | Portal、VS Code、Visual Studio、CLI、PowerShellのどれで試すか決める | 本番に近い運用を見たいならCLI/PowerShellも確認する |
| リソースグループを作る | Quickstartでは myResourceGroup などの例が使われる | 本番では命名規則、タグ、権限境界を決める |
| イメージを作る | Dockerfileからイメージをビルドする | latest だけに頼らず、日付やビルド番号のタグを使う |
| ACRへPushする | Azure Container Registryへイメージを登録する | Pull権限をマネージドIDに寄せる |
| App Serviceへデプロイする | OS、レジストリ、イメージ、タグを指定する | Windows/Linuxとイメージ名の整合性を確認する |
| ログとポートを確認する | 起動ログ、WEBSITES_PORT、アプリログを確認する | 「起動中」のままならログを先に見る |
| 更新手順を試す | 新しいイメージをPushし、App Serviceを再起動して反映を確認する | App Serviceは起動時にレジストリからイメージをPullします。更新をすぐ反映したい場合は再起動が必要です。(Microsoft Learn) |
| クリーンアップする | 不要なリソースグループを削除する | 検証環境の放置はコストとセキュリティリスクになります |
失敗しやすいポイントと対策
| 失敗例 | 原因 | 対策 |
|---|---|---|
| Windowsコンテナーが起動しない | OS選択がLinux、またはLinux用イメージを選んでいる | PortalのOS、ACR上のイメージ名、タグを確認する |
| ACRからPullできない | 認証情報、権限、ネットワーク設定が不足している | マネージドIDにAcrPullを付与し、Private Endpoint利用時はVNet統合も確認する |
| ブラウザーで応答しない | コンテナーの待ち受けポートとApp Service設定が違う | WEBSITES_PORT を設定し、アプリ側の待ち受けポートと合わせる |
| 新しいイメージが反映されない | Push後にApp Serviceが古いイメージを使い続けている | タグ運用を見直し、必要に応じてApp Serviceを再起動する |
| ログが見えず原因が分からない | アプリケーションログが有効化されていない | az webapp log config と az webapp log tail を検証手順に入れる |
| Docker Compose前提で設計している | App ServiceのDocker Compose機能には将来的な変更がある | 公式ドキュメントではDocker Compose機能が2027年3月31日に廃止予定で、Sidecarへの移行が案内されています。(Microsoft Learn) |
本番前チェックリスト
公開前には、少なくとも次の項目を確認してください。
- コンテナーイメージのタグは、リリース単位で追跡できる形式になっている
- App ServiceのOS設定とコンテナーイメージのOSが一致している
- ACR PullはマネージドIDとRBACで制御している
WEBSITES_PORTがアプリの待ち受けポートと一致している- 起動ログとアプリログを確認できる
- アプリ設定や接続文字列にシークレットを直書きしていない
- Private EndpointやVNet統合が必要な場合、名前解決まで検証している
- 不要な検証用リソースを削除できる手順がある
- 障害時に、前のイメージタグへ戻す手順がある
- App Service、Container Apps、AKSのどれを選ぶべきか、プロダクト要件に照らして説明できる
まとめ: 2026年4月更新は「手順の精度」を見直すタイミング
Azure App Serviceのカスタムコンテナーは、既存Webアプリの移行や標準ランタイムでは足りない構成に対して、Kubernetesほど重くない選択肢を提供します。2026年4月更新のQuickstartは、新機能の追加というより、Windows/Linuxの選択ミス、レジストリ指定、CLI/PowerShellのコピーしやすさ、監視・ネットワーク関連リンクの整理によって、実務での失敗を減らす更新と捉えるべきです。
次に取るべき行動は明確です。まず検証環境でQuickstartを1回通し、次にACR、マネージドID、ログ、ポート、更新手順を自社標準に置き換えてください。最後に、App Serviceで十分か、Container AppsやAKSが必要かを判断すれば、プロダクトの規模と運用体制に合ったAzureコンテナー基盤を選びやすくなります。

コメント