使用 SQL Server 的 Docker 镜像,是在 macOS、Linux 或 Windows 上快速搭建数据库环境的最便捷方式,非常适合开发与测试。
快速上手
1. 拉取镜像
从微软官方容器注册表(MCR)拉取镜像。你可以根据需要选择版本,-latest 代表该系列的最新版:
# SQL Server 2022 (推荐)
docker pull mcr.microsoft.com/mssql/server:2022-latest
# SQL Server 2019
docker pull mcr.microsoft.com/mssql/server:2019-latest
# SQL Server 2017
docker pull mcr.microsoft.com/mssql/server:2017-latest
2. 运行容器
使用以下命令启动容器,请务必替换 YourStrong@Passw0rd 为一个包含大写字母、小写字母、数字和特殊符号的强密码,并可根据需要修改容器名称 :
docker run -e "ACCEPT_EULA=Y" \
-e "SA_PASSWORD=YourStrong@Passw0rd" \
-p 1433:1433 \
--memory=4g \
--name sqlserver \
-d mcr.microsoft.com/mssql/server:2022-latest
ACCEPT_EULA=Y: 接受最终用户许可协议(必选)。SA_PASSWORD: 设置系统管理员(sa)账户的密码 。-p 1433:1433: 将宿主机的 1433 端口映射到容器的 1433 端口 。-v /your/data/path:/var/opt/mssql: (可选)将容器内的数据目录挂载到宿主机,实现数据持久化 。
验证与连接
1. 检查容器状态
docker ps
# 你应该能看到名为 sqlserver 的容器状态为 "Up"
2. 连接并执行一条 SQL
可以使用 docker exec 命令在容器内通过 sqlcmd 工具进行连接和测试 :
# 在容器内执行 sqlcmd 创建数据库并查询
docker exec -it sqlserver /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P "YourStrong@Passw0rd" \
-Q "CREATE DATABASE TestDB; SELECT Name FROM sys.databases;"
3. 使用外部客户端连接
你也可以使用 SQL Server Management Studio (SSMS)、Azure Data Studio 或 Navicat 等客户端工具,通过以下信息连接:
- 服务器:
localhost,1433(或你宿主机的 IP 地址) - 身份验证: SQL Server 身份验证
- 登录名:
sa - 密码: 你设置的强密码
避坑指南
-
密码强度要求:
SA_PASSWORD必须是强密码(例如MyP@ssw0rd123)。如果密码过于简单(如123456),容器启动后几秒就会自动停止。你可以通过docker logs sqlserver查看错误日志来确认 。 -
端口冲突:确保宿主机上的
1433端口没有被其他 SQL Server 实例占用。如果冲突,可以将映射端口改为其他值,如-p 1400:1433,连接时指定localhost,1400即可。 -
资源要求:SQL Server 容器至少需要 2GB 可用内存,否则可能无法启动 。你可以在 Docker Desktop 的设置中为容器预留足够内存。
-
数据持久化:强烈建议使用
-v参数挂载数据卷,否则一旦容器被删除,所有数据都将丢失 。
如果你需要了解关于网络配置、定制 SQL Server 配置(如启用代理)或导入/导出数据库等更具体的操作,可以随时告诉我。