Azure Container Instances に Azure ファイル共有をマウントする
既定では、Azure Container Instances はステートレスです。 コンテナーがクラッシュまたは停止すると、すべての状態が失われます。 コンテナーの有効期間後も状態を保持するには、外部ストアからボリュームをマウントする必要があります。 このユニットで示すように、Azure Container Instances では、Azure Files を使って作成した Azure ファイル共有をマウントできます。 Azure Files はクラウドで、業界標準のサーバー メッセージ ブロック (SMB) プロトコルを介してアクセスできる、フル マネージドのファイル共有を提供します。 Azure Container Instances で Azure ファイル共有を使用することで、 Azure 仮想マシンで Azure ファイル共有を使用するのと同様のファイル共有機能を提供します。
制限事項
- Azure Files 共有は、Linux コンテナーにのみマウントできます。
- Azure ファイル共有ボリュームのマウントでは、Linux コンテナーを "ルート" として実行する必要があります。
- Azure ファイル共有ボリュームのマウントは、CIFS サポートに限定されています。
コンテナーのデプロイとボリュームのマウント
Azure CLI を使って Azure ファイル共有をコンテナーのボリュームとしてマウントするには、az container create
でコンテナーを作成するときに共有とボリューム マウント ポイントを指定します。 コマンドの例を次に示します。
az container create \
--resource-group $ACI_PERS_RESOURCE_GROUP \
--name hellofiles \
--image mcr.microsoft.com/azuredocs/aci-hellofiles \
--dns-name-label aci-demo \
--ports 80 \
--azure-file-volume-account-name $ACI_PERS_STORAGE_ACCOUNT_NAME \
--azure-file-volume-account-key $STORAGE_KEY \
--azure-file-volume-share-name $ACI_PERS_SHARE_NAME \
--azure-file-volume-mount-path /aci/logs/
--dns-name-label
値は、コンテナー インスタンスを作成する Azure リージョン内で一意である必要があります。 コマンドを実行したときに DNS 名ラベルのエラー メッセージが表示された場合は、前述のコマンドの値を更新してください。
コンテナーのデプロイとボリュームのマウント - YAML
Azure CLI と YAML テンプレートを使用して、コンテナー グループをデプロイしてコンテナー内にボリュームをマウントすることもできます。 複数のコンテナーから成るコンテナー グループをデプロイするときは、YAML テンプレートによるデプロイ方法が推奨されます。
以下の YAML テンプレートは、aci-hellofiles
イメージで作成されたコンテナーを 1 つ含むコンテナー グループを定義しています。 コンテナーでは、以前にボリュームとして作成された Azure ファイル共有 acishare がマウントされます。 YAML ファイルの例を次に示します。
apiVersion: '2019-12-01'
location: eastus
name: file-share-demo
properties:
containers:
- name: hellofiles
properties:
environmentVariables: []
image: mcr.microsoft.com/azuredocs/aci-hellofiles
ports:
- port: 80
resources:
requests:
cpu: 1.0
memoryInGB: 1.5
volumeMounts:
- mountPath: /aci/logs/
name: filesharevolume
osType: Linux
restartPolicy: Always
ipAddress:
type: Public
ports:
- port: 80
dnsNameLabel: aci-demo
volumes:
- name: filesharevolume
azureFile:
sharename: acishare
storageAccountName: <Storage account name>
storageAccountKey: <Storage account key>
tags: {}
type: Microsoft.ContainerInstance/containerGroups
複数ボリュームのマウント
コンテナー インスタンスに複数のボリュームをマウントするには、Azure Resource Manager テンプレートまたは YAML ファイルを使用してデプロイを行う必要があります。 テンプレートまたは YAML ファイルを使用するには、テンプレートの properties
セクションで volumes
配列を設定することにより、共有の詳細を指定し、ボリュームを定義します。
たとえば、share1 および share2 という 2 つの Azure Files 共有をストレージ アカウント myStorageAccount に作成した場合、Resource Manager テンプレート内の volumes
配列は次のようになります。
"volumes": [{
"name": "myvolume1",
"azureFile": {
"shareName": "share1",
"storageAccountName": "myStorageAccount",
"storageAccountKey": "<storage-account-key>"
}
},
{
"name": "myvolume2",
"azureFile": {
"shareName": "share2",
"storageAccountName": "myStorageAccount",
"storageAccountKey": "<storage-account-key>"
}
}]
次に、ボリュームをマウントするコンテナー グループ内の各コンテナーに対して、コンテナー定義の properties
セクションで volumeMounts
配列を設定します。 たとえば、以下は、前に定義した 2 つのボリューム myvolume1 と myvolume2 をマウントします。
"volumeMounts": [{
"name": "myvolume1",
"mountPath": "/mnt/share1/"
},
{
"name": "myvolume2",
"mountPath": "/mnt/share2/"
}]