首页 > 解决方案 > Azure ACI 和文件共享 - 无法访问卷挂载的 linux MSSQL Server

问题描述

我在 Azure 容器实例中使用mssql 服务器映像。

在不安装任何卷的情况下,ACI 已成功创建并且工作正常。但是当我挂载一个卷时,即使在重新启动容器后仍然保留数据,由 Azure 存储帐户(文件共享)组成,ACI 已成功创建,但无法访问数据库。

logsecrets文件夹在文件共享 (acishare) 中创建,但数据不在文件共享中生成。

任何人都可以提供详细的步骤来解决它或使用文件共享创建 ACI 作为 mssql 服务器 docker 映像的卷。

[用于创建安装了 Azure 文件共享卷的 ACI 的 Azure bash 命令]

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'

标签: sql-serverazuredockerazure-cliazure-container-instances

解决方案


ACI创建成功但无法访问的原因是mssql服务器没有正常运行。将 Azure 文件共享装载到/var/opt/mssql容器的路径时,文件共享会覆盖其中的所有文件。但是这些文件是运行 mssql 服务器所必需的。所以服务器无法启动。

可能的解决方案是将文件共享挂载到不存在或不影响mssql服务器运行的新路径。然后您需要手动将您想要的数据传输到挂载路径。这不是一个好的解决方案。但由于文件共享挂载的限制,现在没有更好的解决方案。


推荐阅读