SQL Server Express не запускается при работающем док-контейнере (Windows)
Что я сделал:
- Я установил Docker для Windows (бета) в Windows 10 Anniversary Update
- Я вытащил образ майкрософт /windowsservercore
- Я установил SQL Server Express 2016 на работающий контейнер A этого образа.
- Я вышел из контейнера А
- Я передал контейнер A для нового изображения sqlimage
- Я запускаю новый контейнер B с новым sqlimage
Моя проблема:
На контейнере A SQL Server работает правильно.
На контейнере B не удалось запустить SQL Server.
Когда я пытаюсь запустить службу с чистого запуска "SQL Server (INST)", я получаю следующую ошибку:
Произошла ошибка, связанная с конкретной услугой: 5.
В чем разница между этими двумя контейнерами?
Спасибо за помощь!
3 ответа
У Microsoft есть собственный образ в Docker Hub с установленным SQL Server 2016 Express: https://hub.docker.com/r/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 будет использовать при запуске нового контейнера из образа, так что вам лучше собирать свой образ из Dockerfile.
Относительно того, почему служба не запускается в вашем контейнере B - это зависит от шагов, которые вы предприняли для установки SQL, и параметров, которые вы использовали при запуске контейнеров.
Чтобы установить 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
Мой контейнер не запустился, я посмотрел журнал и обнаружил ошибку пароля, запрашивающую не менее 8 символов. При создании образа попробуйте ввести пароль из 8 и более символов.