SQLServer Docker 镜像

使用 SQL Server 的 Docker 镜像,是在 macOS、Linux 或 Windows 上快速搭建数据库环境的最便捷方式,非常适合开发与测试。

:rocket: 快速上手

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: (可选)将容器内的数据目录挂载到宿主机,实现数据持久化 。

:white_check_mark: 验证与连接

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 StudioNavicat 等客户端工具,通过以下信息连接:

  • 服务器localhost,1433(或你宿主机的 IP 地址)
  • 身份验证: SQL Server 身份验证
  • 登录名sa
  • 密码: 你设置的强密码

:pushpin: 避坑指南

  • 密码强度要求SA_PASSWORD 必须是强密码(例如 MyP@ssw0rd123)。如果密码过于简单(如 123456),容器启动后几秒就会自动停止。你可以通过 docker logs sqlserver 查看错误日志来确认 。

  • 端口冲突:确保宿主机上的 1433 端口没有被其他 SQL Server 实例占用。如果冲突,可以将映射端口改为其他值,如 -p 1400:1433,连接时指定 localhost,1400 即可。

  • 资源要求:SQL Server 容器至少需要 2GB 可用内存,否则可能无法启动 。你可以在 Docker Desktop 的设置中为容器预留足够内存。

  • 数据持久化:强烈建议使用 -v 参数挂载数据卷,否则一旦容器被删除,所有数据都将丢失 。

如果你需要了解关于网络配置、定制 SQL Server 配置(如启用代理)或导入/导出数据库等更具体的操作,可以随时告诉我。