【问题标题】:Data loss on Azure Container Instance with mounted volume安装卷的 Azure 容器实例上的数据丢失
【发布时间】:2021-09-25 07:44:06
【问题描述】:

我刚刚在 azure 上创建了一个容器实例,其中包含一个 sql server docker 映像和一个挂载的文件共享存储作为一个卷。事实是容器卡住了,所以我重新启动了它。

重新启动后,所有数据都消失了。当我在本地重新启动 docker 容器时,由于卷的原因,数据仍然存在,所以我无法理解 azure 上的行为。

有什么线索吗?

这是我运行创建容器的 cli 命令

az container create --resource-group myresource-rg \
--name project-test-db \
--image mcr.microsoft.com/mssql/server:2019-latest \
--location westus2 \
--ports 1433 \
--memory 5  \
--environment-variables SA_PASSWORD=Password ACCEPT_EULA=Y \ 
--ip-address public \
--azure-file-volume-account-name projectteststorageacc \ 
--azure-file-volume-account-key \MyKey \ 
--azure-file-volume-share-name project-test-file-share \ 
--azure-file-volume-mount-path /databases

【问题讨论】:

  • “容器被卡住”是什么意思?您能否详细说明或分享更多有关此事件的错误日志?
  • 我的意思是容器崩溃了。我目前没有关于它的日志错误
  • 我的回答有帮助吗?
  • 我还没试过。我将数据库更改为 DTU 无服务器 Azure SQL 数据库,该数据库比用于测试目的的容器便宜。但是,我将在本周末尝试您的解决方案,并让您知道这是否有效。非常感谢
  • 你有没有机会尝试我的方法

标签: sql-server azure docker containers docker-volume


【解决方案1】:

尝试如下编辑您的命令

" " 用于ACCEPT_EULA=Ykey-value 对,如下所示。并将SA_PASSWORD替换为MSSQL_SA_PASSWORD

--environment-variables "MSSQL_SA_PASSWORD=Password" "ACCEPT_EULA=Y" \

SQL Server 映像的必需设置,一个至少 8 个字符且符合 SQL Server password requirements 的强密码。如果您已经设置了适当的 strong 密码和存储密钥,那么以下命令对我来说就可以了。如果密码不符合 SQL 标准,则此容器将失败(重新启动循环)。

PS /home/karthik> $Password = "MyStrongPassword"
PS /home/karthik> $key = "FO/R6WkZELhMzX02wi9KahtLtKppoSIJg/EcJLEnZajRm2uxXs0sb/APaCk1eRsNW31yijSjS1hFm5Rd4rdTew=="

az container create --resource-group Myrg \
--name project-test-db \
--image mcr.microsoft.com/mssql/server:2019-latest \
--location westus2 \
--ports 1433 \
--memory 5  \
--environment-variables "SA_PASSWORD=$Password" "ACCEPT_EULA=Y" \ 
--ip-address public \
--azure-file-volume-account-name kteststoragee \ 
--azure-file-volume-account-key $key \ 
--azure-file-volume-share-name ktestfs2 \ 
--azure-file-volume-mount-path /databases

当您在 Azure 容器实例中有一个行为不端的容器时,首先使用 az container logs 查看其日志,然后使用 az container attach 流式传输其标准输出和标准错误。

az container attach 命令在容器启动期间提供诊断信息。容器启动后,会将 STDOUT 和 STDERR 流式传输到本地控制台。

参考:Quickstart: Run SQL Server container images with DockerDocker run command fails with Accept-Eula Agreement error #199

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    相关资源
    最近更新 更多