Azure Container Instances에서 Azure 파일 공유 탑재
기본적으로 Azure Container Instances는 비저장 상태입니다. 컨테이너의 작동이 중단되거나 중지되면 모든 상태가 손실됩니다. 컨테이너 수명이 지난 후에도 상태를 유지하려면 외부 저장소의 볼륨을 탑재해야 합니다. 이 단원에서 살펴본 것처럼, Azure Container Instances는 Azure Files로 만든 Azure 파일 공유를 탑재할 수 있습니다. Azure Files는 산업 표준 SMB(서버 메시지 블록) 프로토콜을 통해 액세스할 수 있는, 클라우드에서 완전 관리형 파일 공유를 제공합니다. Azure Container Instances에서 Azure 파일 공유를 사용하면 Azure Virtual Machines에서 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
이미지로 생성된 하나의 컨테이너로 컨테이너 그룹을 정의합니다. 컨테이너는 이전에 생성된 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
배열을 채워서 공유 세부 정보를 제공하고 볼륨을 정의합니다.
예를 들어 스토리지 계정 myStorageAccount에서 공유1 및 공유2라는 두 개의 Azure Files 공유를 만든 경우 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
배열을 채웁니다. 예를 들어 다음은 이전에 정의한 myvolume1 및 myvolume2라는 두 개의 볼륨을 탑재합니다.
"volumeMounts": [{
"name": "myvolume1",
"mountPath": "/mnt/share1/"
},
{
"name": "myvolume2",
"mountPath": "/mnt/share2/"
}]