将NFS挂载作为卷映射的SQL Server docker容器

时间:2017-08-18 10:45:19

标签: sql-server docker

我正在尝试使用搁浅的microsoft / mssql-server-linux:最新的docker镜像在ubuntu上运行SQL Server作为docker容器。对于数据持久性,我正在使用docker run命令中的-v选项将一个卷从我的主机(具有ext4文件系统)映射到容器,如下所示

docker run -it -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=######' -p 1433:1433 
               -v /var/opt/database:/var/opt/mssql/data microsoft/mssql-server-linux

Container正常运行,我可以连接到数据库。但是我不希望将数据存储在我的主机上,因为数据库的大小不断增加以及群体原因。现在我想在其他机器上运行NFS服务器并将nfs目录挂载到我的docker主机上,然后在卷映射上使用该nfs目录,现在卷映射是

-v /var/nfs/database:/var/opt/mssql/data 

其中/var/nfs/database是docker主机上的nfs mount dir。现在,当我启动容器时,我收到以下错误

  

2017-08-18 10:15:53.98 spid5s FCB :: Open failed:无法打开文件/var/opt/mssql/data/master.mdf文件编号1.操作系统错误:87(参数不正确)。   2017-08-18 10:15:53.98 spid5s错误:5120,严重性:16,状态:101。   2017-08-18 10:15:53.98 spid5s无法打开物理文件“/var/opt/mssql/data/master.mdf”。操作系统错误87:“87(参数不正确。)”。   2017-08-18 10:15:54.13 spid5s错误:17204,严重性:16,状态:1。   2017-08-18 10:15:54.13 spid5s FCB :: Open failed:无法打开文件/var/opt/mssql/data/mastlog.ldf文件号2.操作系统错误:87(参数不正确。)。   2017-08-18 10:15:54.13 spid5s错误:5120,严重性:16,状态:101。   2017-08-18 10:15:54.13 spid5s无法打开物理文件“/var/opt/mssql/data/mastlog.ldf”。操作系统错误87:“87(参数不正确。)”。

我已授予数据库文件的所有权限。以下是nfs mount代码段

  

sharedstorageIp:/ var / nfs nfs4 443G 47G 375G 11%/ var / nfs

1 个答案:

答案 0 :(得分:2)

release notes解释说你不能这样做:

  

此处不支持在NFS服务器上托管数据库文件   发布。这包括使用NFS进行共享磁盘故障转移群集   以及非群集实例上的数据库。我们正在努力   在即将发布的版本中启用NFS服务器支持。

考虑到数据库对可靠性的要求,在网络路径上托管数据库文件并非易事。在协议版本2.2之前,无法在SMB共享上托管文件。