1.拉取sqlserver2019镜像

docker pull mcr.microsoft.com/mssql/server:2019-latest

2.创建主机映射目录

mkdir -p /mnt/001.docker/mssql

3.修改主机映射目录权限

chown -R 10001:0 /mnt/001.docker/mssql

#否则会报以下错误

# /opt/mssql/bin/sqlservr: Error: Directory /var/opt/mssql/system/] could not be created.  Errno [13]
docker run --name MSSQL2019 \
    -u root \
    -h MSSQL \
    -p 1433:1433 \
    -e 'ACCEPT_EULA=Y' \
    -e 'SA_PASSWORD=MYpassword2019' \
    -e 'MSSQL_PID=<产品序列号>' \
    -v /mnt/001.docker/mssql:/var/opt/mssql \
    -d mcr.microsoft.com/mssql/server:latest
参数说明:

–name: 指定容器名称
-h: 指定容器ID
-p:端口映射 (主机端口:容器端口)
-e: SQL Server内部参数
-e “ACCEPT_EULA=Y”: 将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server 映像的必需设置。
-e “SA_PASSWORD=MYpassword2019”:指定至少包含 8 个字符且符合 SQL Server 密码要求的强密码。 SQL Server 映像的必需设置。
-d: 容器镜像(REPOSITORY)
SQLserver 密码要求:

密码不得包含用户的帐户名。
密码长度至少为八个字符。
密码包含以下四类字符中的三类:
拉丁文大写字母 (A - Z)
拉丁文小写字母 (a - z)
10 个基本数字 (0 - 9)
非字母数字字符,如感叹号 (!)、美元符号 ($)、数字符号 (#) 或百分号 (%)。
密码可最长为 128 个字符。 使用的密码应尽可能长,尽可能复杂。

可以通过运行docker ps 查看正在运行的容器

4.连接SQL Server2019 数据库容器

4.1 命令行工具-sqlcmd

1. 进入容器
sudo docker exec -it MSSQL2019 bash
2. 使用sqlcmd进行本地连接
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "MYpassword2019"

4.2 使用SSMS连接

4.3 使用DataGrip连接

5.开启MSSQL代理服务

/opt/mssql/bin/mssql-conf set sqlagent.enabled true
[root@Container]# docker exec -it MSSQL2019 bash
root@MSSQL:/# /opt/mssql/bin/mssql-conf set sqlagent.enabled true
SQL Server needs to be restarted in order to apply this setting. Please run
'systemctl restart mssql-server.service'.
root@MSSQL:/# service mssql^C
root@MSSQL:/# exit
exit
[root@Container]# docker restart MSSQL2019
MSSQL2019

6.更改SA密码

SA 帐户是安装过程中在 SQL Server 实例上创建的系统管理员。 创建 SQL Server 容器后,通过在容器中运行 echo $SA_PASSWORD,可发现指定的 SA_PASSWORD 环境变量。 出于安全考虑,请考虑更改 SA 密码。

docker exec -it MSSQL2019 /opt/mssql-tools/bin/sqlcmd \
   -S {MSSQL2019-Server} -U SA -P "MYpassword2019" \
   -Q 'ALTER LOGIN SA WITH PASSWORD="MYnewPASSWORD2019"'

7.创建和查询数据

7.1 新建数据库

以下步骤创建一个名为 TestDB 的新数据库。

1. 在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL 命令以创建测试数据库:
CREATE DATABASE TestDB
2. 在下一行中,编写一个查询以返回服务器上所有数据库的名称:
SELECT Name from sys.Databases
3. 前两个命令没有立即执行。 在新行中键入 GO 以执行以前的命令:
GO

db2 docker 镜像 docker sqlserver镜像_容器

8.SQL Server 密钥(含2019)

SQL Server 2019
Enterprise:HMWJ3-KY3J2-NMVD7-KG4JR-X2G8G
Enterprise Core:2C9JR-K3RNG-QD4M4-JQ2HR-8468J
Strandard:PMBDC-FXVM3-T777P-N4FY8-PKFF4
Web:33QQK-WWQNB-G6T46-C86YB-TX2PH

SQL Server 2017
Enterprise:TDKQD-PKV44-PJT4N-TCJG2-3YJ6B
Enterprise Core:6GPYM-VHN83-PHDM2-Q9T2R-KBV83
Strandard:PHDV4-3VJWD-N7JVP-FGPKY-XBV89
Web:WV79P-7K6YG-T7QFN-M3WHF-37BXC

SQL Server 2016
Enterprise:MDCJV-3YX8N-WG89M-KV443-G8249
Enterprise Core:TBR8B-BXC4Y-298NV-PYTBY-G3BCP
Standard:B9GQY-GBG4J-282NY-QRG4X-KQBCR
Web:BXJTY-X3GNH-WHTHG-8V3XK-T8243

SQL Server 2014
Business Intelligence:GJPF4-7PTW4-BB9JH-BVP6M-WFTMJ
Developer:82YJF-9RP6B-YQV9M-VXQFR-YJBGX
Enterprise:27HMJ-GH7P9-X2TTB-WPHQC-RG79R
Enterprise Core:TJYBJ-8YGH6-QK2JJ-M9DFB-D7M9D
Strandard:P7FRV-Y6X6Y-Y8C6Q-TB4QR-DMTTK
Web:J9MBB-R8PMP-R8WTW-8JJRD-C6GGW

9.其它使用

可以参考:官方Docker快速入门文档

MSSQL语句使用查询文档