0

Что я сделал:SQL Server Express не запускается работает докер контейнер (Windows)

  • я установил Docker для ОС Windows (бета) на Windows 10-летию Update
  • Я вытащил образ microsoft/windowsservercore
  • Я установил SQL Server Express 2016 на работающий контейнер A этого изображения.
  • Я вышел из контейнера
  • Я совершил контейнер для нового изображения sqlimage
  • бегаю новый контейнер B с новым sqlimage

Моя проблема:
На контейнере SQL Server работает правильно.
В контейнере B SQL Server не может быть запущен.
Когда я пытаюсь запустить службу с чистым стартом «SQL Server (INST)» я получаю следующее сообщение об ошибке:
Конкретной ошибка службы произошла: 5.

В чем разница между этими двумя контейнерами?

Спасибо за помощь!

ответ

0

Microsoft имеет свой собственный образ на концентраторе Docker с установленным SQL Server 2016 Express: microsoft/mssql-server-2016-express-windows. Вы можете использовать это непосредственно, или продлить его своим Dockerfile, который начинается:

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

Если вы не хотите создать свой собственный, вы можете увидеть, как Microsoft сделать это с их Dockerfile - и если вы проверяете скрипт PowerShell в CMD инструкции, он начинает SQL Express, как это:

start-service MSSQL`$SQLEXPRESS 

при использовании docker commit, чтобы сохранить измененное изображение, вы не изменяя CMD что Docker будет использовать при запуске нового контейнера с изображения, так что вам лучше с building your image from a Dockerfile.

О том, почему служба не запускается в вашем контейнере B - это зависит от шагов, которые вы предприняли для установки SQL, и параметров, которые вы использовали при запуске контейнеров.

+0

Я попытался запустить службу с помощью PowerShell и инициированию оказание услуг. Это не начинается. Я хочу, чтобы избежать загрузки и установки sqlserver при создании контейнера, потому что я хочу запускать много контейнеров, и это займет слишком много времени. Я написал ответ с шагами, которые я предпринял для установки сервера sql. Спасибо! –

+0

Вы можете написать файл Docker, который содержит инструкции «RUN» для загрузки установщика SQL Server и запуска установки.Это происходит только тогда, когда вы используете 'docker build' для создания изображения. Вы можете использовать 'docker run' для запуска многих контейнеров с одного и того же изображения, и они не повторяют никаких инструкций сборки из файла Docker - только команда« CMD », которая сообщает Docker, что делать, когда запускаются контейнеры. –

+0

Ahhh, Ok! Я подумал, что они повторяются ... –

0

Для установки SQL Server я бегу:

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

ConfigurationFile:

[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