2

我做了什么:

  • 我在 Windows 10 周年更新上安装了Docker Desktop for Windows
  • 我拉了一个图像 microsoft/windowsservercore
  • 我在此映像的运行容器 A 上安装了SQL Server Express 2016 。
  • 我退出了容器 A
  • 我将容器 A 提交给一个新图像 sqlimage
  • 我用新的 sqlimage 运行一个新的容器 B

我的问题:
在容器 A 上,SQL Server 工作正常。
在容器 B 上,无法启动 SQL Server。
当我尝试使用 net start "SQL Server (INST)" 启动服务时,出现以下错误:
发生服务特定错误:5。

这两个容器有什么区别?

4

2 回答 2

0

Microsoft 在安装了 SQL Server 2016 Express 的 Docker Hub 上有自己的映像:microsoft/mssql-server-2016-express-windows。您可以直接使用它,也可以使用您自己的 Dockerfile 扩展它:

FROM microsoft/mssql-server-2016-express-windows

如果你想自己构建,你可以从他们的Dockerfile中看到微软是如何做到的——如果你检查CMD指令中的 PowerShell 脚本,它会像这样启动 SQL Express:

start-service MSSQL`$SQLEXPRESS

当您使用docker commit保存更改的图像时,您不会更改CMDDocker 在从图像运行新容器时将使用的内容,因此您最好从 Dockerfile 构建图像

至于为什么服务无法在您的容器 B 中启动 - 这取决于您安装 SQL 所采取的步骤,以及您在运行容器时使用的选项。

于 2016-10-20T10:17:53.693 回答
0

要安装 SQL Server,我运行:

SETUP.exe /ConfigurationFile=ConfigurationFile.ini  /SAPWD="XXXXXXX" /IACCEPTSQLSERVERLICENSETERMS

配置文件:

[OPTIONS]
ACTION="Install"
ROLE="AllFeatures_WithDefaults"
ENU="True"
Setup will not display any user interface. 
QUIET="True"
QUIETSIMPLE="False"
UpdateEnabled="True"
ERRORREPORTING="False"
USEMICROSOFTUPDATE="True"
FEATURES=SQLENGINE,REPLICATION,SNAC_SDK
UpdateSource="MU"
HELP="False"
INDICATEPROGRESS="True"
X86="False"
INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"
INSTANCENAME="XAM"
SQMREPORTING="False"
INSTANCEID="XAM"
INSTANCEDIR="C:\Program Files\Microsoft SQL Server"
AGTSVCACCOUNT="NT-AUTORITÄT\NETZWERKDIENST"
AGTSVCSTARTUPTYPE="Disabled"
COMMFABRICPORT="0"
COMMFABRICNETWORKLEVEL="0"
COMMFABRICENCRYPTION="0"
MATRIXCMBRICKCOMMPORT="0"
SQLSVCSTARTUPTYPE="Automatic"
FILESTREAMLEVEL="0"
ENABLERANU="True"
SQLCOLLATION="Latin1_General_CI_AS"
SQLSVCACCOUNT="NT Service\MSSQL$XAM"
SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS"
SECURITYMODE="SQL"
INSTALLSQLDATADIR="C:\SQLData"
ADDCURRENTUSERASSQLADMIN="True"
TCPENABLED="1"
NPENABLED="0"
BROWSERSVCSTARTUPTYPE="Automatic"

我运行容器

docker run -i --net=mytransparentnw --name B sqlimage
于 2016-10-20T12:13:07.747 回答