Если вы используете Docker CE в Windows с контейнерами Linux, укажите двойные кавычки вокруг переменных среды, чтобы они были распознаны:
docker run -e "ACCEPT_EULA=Y" -e 'SA_PASSWORD=MyStr@ngPassw0rd" -e "MSSQL_PID=Express" -p 1433:1433 -d microsoft/mssql-server-linux:latest
После этого вы сможете подключиться с использованием SSMS.В этом случае с портом 1433 по умолчанию вы можете указать .
или localhost
в качестве имени сервера.Вы также можете подключиться к экземпляру контейнера с удаленного хоста, указав только имя вашего компьютера (при условии, что правила брандмауэра разрешают входящий трафик порта 1433).
При использовании одинарных кавычек значения не распознаются, и контейнер немедленно останавливается,Вы можете использовать docker logs <container-name>
для просмотра сообщений из журнала ошибок SQL Server для устранения неполадок.Ниже приведен пример использования имени контейнера эксплицита (который я рекомендую для упрощения таких задач) с использованием исходной команды задачи:
docker run --name sql1 -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=MyStr@ngPassw0rd' -e 'MSSQL_PID=Express' -p 1433:1433 -d microsoft/mssql-server-linux:latest
c3de002fc22106e53c9b165c7f444905b5ef1bb1596eddf1b097cdd6d60e6c75
docker logs sql1
Лицензионное соглашение с конечным пользователем SQL Server (EULA) должно бытьпринято до запуска SQL Server.Условия лицензии для этого продукта можно загрузить с http://go.microsoft.com/fwlink/?LinkId=746388.
. Вы можете принять лицензионное соглашение, указав параметр командной строки --accept-eula, задав переменную среды ACCEPT_EULA или используя инструмент mssql-conf.
Как видно из записанного в журнал сообщения, экземпляр SQL остановился (остановив контейнер), поскольку SQL Server не распознал EULA, принятое из-за одинарных кавычек.