我正在Azure容器实例中使用mssql server图像。
在不装载任何卷的情况下,ACI已成功创建并且可以正常工作。但是,当我装载一个卷时,即使由Azure存储帐户(文件共享)制成的容器重新启动后,即使要持久保存数据,ACI也会成功创建,但是无法访问数据库。
在文件共享(acishare)中创建log 和 secrets 文件夹,但在文件共享中未生成数据。>
任何人都可以提供详细的步骤来解决该问题,或者创建与文件共享为卷的msi服务器docker映像的ACI。
[Azure bash命令创建安装了Azure文件共享卷的ACI]
ACI_PERS_RESOURCE_GROUP=PC
ACI_PERS_STORAGE_ACCOUNT_NAME=pcs1
ACI_PERS_LOCATION=eastus
ACI_PERS_SHARE_NAME=acishare
STORAGE_KEY=$(az storage account keys list --resource-group $ACI_PERS_RESOURCE_GROUP --account-name $ACI_PERS_STORAGE_ACCOUNT_NAME --query "[0].value" --output tsv)
az container create \
--resource-group $ACI_PERS_RESOURCE_GROUP \
--name pcs5 \
--image mcr.microsoft.com/mssql/server \
--dns-name-label pcs5 \
--ports 80 443 1433 \
--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 /var/opt/mssql/ \
--memory 2.5 \
--environment-variables 'SA_PASSWORD'='PxSecret123' 'ACCEPT_EULA'='Y' 'MSSQL_PID=Express'
答案 0 :(得分:1)
成功创建ACI但无法访问ACI的原因是,mssql服务器无法正常运行。将Azure文件共享安装到容器的路径/var/opt/mssql
时,文件共享将覆盖其中的所有文件。但是,文件对于mssql服务器运行是必需的。因此服务器无法启动。
可能的解决方案是将文件共享安装到不存在或不影响mssql服务器运行的新路径。然后,您需要将所需的数据手动传输到安装路径。这不是一个好的解决方案。但是由于文件共享安装的限制,现在没有更好的解决方案。