sql-server - Azure ACI 和文件共享 - 无法访问卷挂载的 linux MSSQL Server
问题描述
我在 Azure 容器实例中使用mssql 服务器映像。
在不安装任何卷的情况下,ACI 已成功创建并且工作正常。但是当我挂载一个卷时,即使在重新启动容器后仍然保留数据,由 Azure 存储帐户(文件共享)组成,ACI 已成功创建,但无法访问数据库。
log和secrets文件夹在文件共享 (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'
解决方案
ACI创建成功但无法访问的原因是mssql服务器没有正常运行。将 Azure 文件共享装载到/var/opt/mssql
容器的路径时,文件共享会覆盖其中的所有文件。但是这些文件是运行 mssql 服务器所必需的。所以服务器无法启动。
可能的解决方案是将文件共享挂载到不存在或不影响mssql服务器运行的新路径。然后您需要手动将您想要的数据传输到挂载路径。这不是一个好的解决方案。但由于文件共享挂载的限制,现在没有更好的解决方案。
推荐阅读
- python-3.x - 在 Python 中使用 configparser 进行部分检查的问题
- bash - Bash:查找具有特定扩展名的所有文件并根据每个文件中的第一行内容重命名它们
- javascript - 如何为 IE11 正确使用 babel/corejs3/webpack?
- oracle - 为oracle sql中的两个不同列添加条件where子句
- javascript - 使用过渡更改 hr 数据内容的颜色
- c - 用C中的4个唯一随机数填充数组
- lua - 如何使lua搜索模块与首先调用require的模块位于同一文件夹中?
- php - 为什么不能为每个班级创建模拟?
- kubernetes - 如何在 GCP VM 中公开 minikube
- swift3 - 可以使用 URLSession swift 4 从 youtube 下载视频吗?