1、执行如下命令:
docker pull mcr.microsoft.com/mssql/server:2022-latest拉取官方镜像(2022 最新稳定版),例如:
root@localhost:~# docker pull mcr.microsoft.com/mssql/server:2022-latest
2022-latest: Pulling from mssql/server
cb5e374be662: Pull complete
f8a6b84d3df9: Pull complete
55a1cf1ba5f6: Pull complete
Digest: sha256:e07b9699a2b749969f19d86563ceeea22bd3a69f7f1db85a8d1ac4bdaf0c6f56
Status: Downloaded newer image for mcr.microsoft.com/mssql/server:2022-latest
mcr.microsoft.com/mssql/server:2022-latest2、执行如下 docker run 命令:
docker run -d \
--name sqlserver \
-p 1433:1433 \
-e "ACCEPT_EULA=Y" \
-e "SA_PASSWORD=Admin@123" \
-e "MSSQL_PID=Express" \
--restart=always \
mcr.microsoft.com/mssql/server:2022-latest创建并启动容器,例如:
root@localhost:~# docker run -d \
--name sqlserver \
-p 1433:1433 \
-e "ACCEPT_EULA=Y" \
-e "SA_PASSWORD=Admin@123" \
-e "MSSQL_PID=Express" \
--restart=always \
mcr.microsoft.com/mssql/server:2022-latest
53dc55bd86e2955c2c6497593b21e9ced145e9c44ad16baa8ba5e1a0dd073cb3参数说明:
SA_PASSWORD=Admin@123 管理员密码(必须复杂:大小写 + 数字 + 符号)
1433 SQL Server 默认端口
ACCEPT_EULA=Y 必须同意协议
MSSQL_PID=Express 免费版,不用授权
执行 docker run 命令后,使用 docker ps 查看启动是否成功,如下:
root@localhost:~# docker ps | grep sqlserver
53dc55bd86e2 mcr.microsoft.com/mssql/server:2022-latest "/opt/mssql/bin/laun…" 29 seconds ago Up 28 seconds 0.0.0.0:1433->1433/tcp, [::]:1433->1433/tcp sqlserver基于上面的 docker run 命令,可以得知如下数据库连接信息:
主机:localhost
端口:1433
身份验证:SQL Server 身份验证
用户名:sa
密码:Admin@123
执行 docker exec -it sqlserver bash 命令进入到 docker 容器,如下:
root@localhost:~# docker exec -it sqlserver bash
mssql@53dc55bd86e2:/$继续执行 /opt/mssql-tools/bin/sqlcmd 命令连接数据库(sqlcmd -S 主机地址 -U 用户名 -P 密码),如下:
mssql@53dc55bd86e2:/opt/mssql-tools18/bin$ ./sqlcmd -S localhost -U sa -P Admin@123
Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate].
Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish connection. For solutions related to encryption errors, see https://go.microsoft.com/fwlink/?linkid=2226722.连接到数据库失败,这是因为 ODBC 18 默认强制校验 SQL Server 证书,容器内 mssql 是自签名证书,本地连接校验失败,添加 -C 参数跳过验证。如下:
mssql@53dc55bd86e2:/opt/mssql-tools18/bin$ ./sqlcmd -S localhost -U sa -P Admin@123 -C
1>连接成功后,执行如下 SQL 语句:
mssql@53dc55bd86e2:/opt/mssql-tools18/bin$ ./sqlcmd -S localhost -U sa -P Admin@123 -C
1> CREATE DATABASE TestDB;
2> SELECT name FROM sys.databases;
3> GO
name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
TestDB
(5 rows affected)
1>注意:上面的 GO 是 sqlcmd 专用批处理指令,用于把前面 1、2 两行 SQL 一次性提交给数据库执行。
除了使用 sqlcmd 命令行工具连接到数据库,还可以使用 Navicat/DBeaver/DataGrip 等可视化工具连接到数据库。下面是使用 DBeaver 连接到 SQL Server 数据库的过程,如下图:
(1)打开数据库连接弹窗,填写数据库信息,如下图:

(2)点击“测试连接”按钮,弹出驱动设置页面,如下图:

(3)点击测试连接窗口的“下载”按钮开始下载数据库 JDBC 驱动,然后链接到数据库,如下图:

显示连接到数据库成功,下面图是数据库信息:
