Azure Container Apps のコンテナーの詳細
Azure Container Apps により、Kubernetes とコンテナー オーケストレーションの詳細が管理されます。 Azure Container Apps のコンテナーでは、任意のランタイム、プログラミング言語、または開発スタックを使用できます。
Azure Container Apps は、Linux ベースの x86-64 (linux/amd64
) コンテナー イメージをサポートしています。 必須のベース コンテナー イメージはありません。また、コンテナーがクラッシュした場合は自動的に再起動します。
構成
以下のコードは、コンテナー アプリ リソース テンプレートの properties.template
セクションの containers
配列の一例です。 この抜粋は、Azure Resource Manager (ARM) テンプレートを使ってコンテナーを設定するときに使用できる構成オプションの一部を示しています。 テンプレート ARM 構成セクションを変更すると、新しいコンテナー アプリのリビジョンがトリガーされます。
"containers": [
{
"name": "main",
"image": "[parameters('container_image')]",
"env": [
{
"name": "HTTP_PORT",
"value": "80"
},
{
"name": "SECRET_VAL",
"secretRef": "mysecret"
}
],
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/myfiles",
"volumeName": "azure-files-volume"
}
]
"probes":[
{
"type":"liveness",
"httpGet":{
"path":"/health",
"port":8080,
"httpHeaders":[
{
"name":"Custom-Header",
"value":"liveness probe"
}]
},
"initialDelaySeconds":7,
"periodSeconds":3
// file is truncated for brevity
複数のコンテナー
サイドカー パターンを実装するために、1 つのコンテナー アプリで複数のコンテナーを定義できます。 コンテナー アプリ内のコンテナーは、ハード ディスクとネットワーク リソースを共有し、同じアプリケーション ライフサイクルを体験します。
サイドカー コンテナーの例を次に示します。
- 共有ボリューム上のプライマリ アプリ コンテナーからログを読み取り、ログ サービスに転送するエージェント。
- 共有ボリューム内のプライマリ アプリ コンテナーによって使用されるキャッシュを更新するバックグラウンド プロセス。
注意
1 つのコンテナー アプリで複数のコンテナーを実行することは、高度なユース ケースです。 マイクロサービス アーキテクチャを実装する場合など、複数のコンテナーを実行するほとんどの状況では、各サービスを個別のコンテナー アプリとしてデプロイします。
コンテナー アプリで複数のコンテナーを実行するには、コンテナー アプリ テンプレートのコンテナー配列に複数のコンテナーを追加します。
コンテナー レジストリ
Container Apps 構成に資格情報を提供して、プライベート レジストリでホストされているイメージをデプロイできます。
コンテナー レジストリを使うには、コンテナー アプリ リソース テンプレートの properties.configuration セクションの registries 配列に必要なフィールドを定義します。 passwordSecretRef フィールドには、パスワードを定義した secrets 配列名にシークレット名を特定します。
{
...
"registries": [{
"server": "docker.io",
"username": "my-registry-user-name",
"passwordSecretRef": "my-password-secret-name"
}]
}
レジストリ情報を追加すると、保存された資格情報を使用して、アプリのデプロイ時にプライベート レジストリからコンテナー イメージをプルできます。
制限事項
Azure Container Apps には、次の制限があります。
- 特権コンテナー: Azure Container Apps では、特権コンテナーを実行できません。 プログラムがルート アクセスを必要とするプロセスを実行しようとすると、コンテナー内のアプリケーションでランタイム エラーが発生します。
- オペレーティング システム: Linux ベースの (
linux/amd64
) コンテナー イメージが必要です。