jk's notes
  • 在 Docker 中安装 SQLServer Linux

在 Docker 中安装 SQLServer Linux

参考链接: 微软文档

快速使用

可以使用的命令 (Win 下):

docker run `
  -e ACCEPT_EULA=Y `
  -e MSSQL_PID="Developer" `
  -e MSSQL_SA_PASSWORD="Sa12345678" `
  -p 1433:1433 `
  -d --name mysqlserver `
  mcr.microsoft.com/mssql/server:2017-latest

Mac 下

docker run \
  -e ACCEPT_EULA=Y \
  -e MSSQL_PID="Developer" \
  -e MSSQL_SA_PASSWORD="Sa12345678" \
  -p 1433:1433 \
  -d --name mysqlserver \
  mcr.microsoft.com/mssql/server:2017-latest

Mac M 芯片不支持 SQLServer, 使用 Azure SQL Edge 代替开发. 镜像使用 mcr.microsoft.com/azure-sql-edge:latest 代替原 SQL Server 即可.

image-20231207092534540

然后就可以看到 Docker 中运行的容器了:

image-20231207092614975

或是在 Docker Desktop 中查看:

image-20231207092653946

可以直接使用 VSCode 来链接数据库, 需要安装扩展: SQL Server (mssql)

image-20231207095702045

第一次使用时会自动下载一些依赖:

image-20231207095820257

确保网络可用.

安装完成后即可点击添加连接, 会依次提示输入: 服务名, 连接数据库的名字(可选), 采用什么方式登录(SQL Login), 登录名 (sa), 密码 (强密码, 必须包含数字, 大小写字母, 特殊字符其中三种以上), 是否需要记住密码, 以及显示在工具中的连接名字.

image-20231207102140420

最后会提示是否信任, 选择信任即可:

image-20231207102219884

最终连接后可以看到:

image-20231207100031270

至此可以像使用 MS SQL Server Management Studio 一样来使用了:

image-20231207102708423

细节说明

镜像托管在 DockerHub 上: https://hub.docker.com/_/microsoft-mssql-server

image-20231207105025512

提供了:

  • 2022
  • 2019
  • 2017

等多个版本

先决条件

  • 硬件与软件要求, 参考官方文档:

    • SQL Server 2016 和 2017:硬件和软件要求

    • SQL Server 2019:硬件和软件要求

  • Doctor 版本 1.8+.

  • Docker overlay2 存储驱动 (大多为默认配置, 细节可参考: 配置文档).

  • 至少 2G 磁盘空间.

  • 至少 2G 内存.

  • 剩下的便是 Linux 下 SQL Server 的要求.

参数说明

使用容器, 参数基本采用环境变量的形式传入:

参数描述
-e "ACCEPT_EULA=Y"将 ACCEPT_EULA 变量设置为任意值, 以确认接受最终用户许可协议. SQL Server 映像的必需设置.
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>"指定至少包含 8 个字符且符合密码策略的强密码。 SQL Server 映像的必需设置。
-e "MSSQL_COLLATION=<SQL_Server_collation>"指定自定义 SQL Server 排序规则,而不使用默认值 SQL_Latin1_General_CP1_CI_AS。
-p 1433:1433将主机环境中的 TCP 端口(第一个值)映射到容器中的 TCP 端口(第二个值)。 在此示例中,SQL Server 侦听容器中的 TCP 1433,此容器端口随后会对主机上的 TCP 端口 1433 公开。
--name sql1为容器指定一个自定义名称,而不是使用随机生成的名称。 如果运行多个容器,则无法重复使用相同的名称。
--hostname sql1用于显式设置容器主机名。 如果未指定主机名,则主机名默认为容器 ID,这是随机生成的系统 GUID。
-d在后台运行容器(守护程序)。
mcr.microsoft.com/mssql/server:2022-latestSQL Server Linux 容器映像。
Last Updated:
Contributors: jk