准备
- 至少 2GB 内存
- 至少 2GB 硬盘剩余空间
必备知识点
- linux 基础操作
- docker 基本概念
拉取镜像
- 从 Docker Hub 拉取 SQL SERVER 2017 Linux 镜像
sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
- 运行 SQL SERVER 容器
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=此处设置sa账号的密码' \
-p 1433:1433 --name mssql -v /data:/var/opt/mssql \
-d mcr.microsoft.com/mssql/server:2017-latest
注意
- 此处使用 Linux 系统 , Windows 系统运行容器稍有区别
- 行末
\表示换行 , 输入命令时可以去掉
运行参数说明
| 参数 | 说明 |
|---|---|
| -e 'ACCEPT_EULA=Y' | 设置此参数说明同意 SQL SERVER 使用条款 , 否则无法使用 |
| -e 'SA_PASSWORD=密码' | 此处设置 SQL SERVER 数据库 SA 账号的密码 |
| -p 1433:1433 | 将宿主机 1433 端口映射到容器的 1433 端口 |
| --name mssql | 设置容器名为 mssql |
| -v /data:/var/opt/mssql | y将宿主机 /data 映射到容器 /var/opt/mssql , 方便备份数据 |
生产环境配置建议
-
服务器重启自动启动容器
--restart=always -
必须设置路径映射或者创建数据卷
-
查看容器运行状态
docker container ls, 如出现图下 , 说明 SQL SERVER 启动成功
-
如果 STATUS 显示
EXITED请查看官网配置指南
修改 SA 密码
SA 账号是 SQL SERVER 默认管理员账号, 创建 SQL SERVER 容器后 , 可以通过 sqlcmd 工具修改密码
-
使用
docker exec执行 sqlcmd 命令sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P '旧密码' \ -Q 'ALTER LOGIN SA WITH PASSWORD="新密码"'
连接 SQL SERVER
SQL SERVER 容器自带 sqlcmd 命令行工具
-
进入容器
docker exec -it mssql bash参数说明
- -it : 此命令位 -i -t 两个参数缩写 , -i 表示以交互模式运行 , -t 表示进如容器命令行
- mssql : 此参数表示要进入的容器名
- bash : 此参数表示进入容器终端
如下图则说明成功进入容器

-
执行 sqlcmd 命令
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '设置的sa密码' -
如果连接成功会出现
>1
使用 SSMS 连接 SQL SERVER
-
打开 SSMS
-
选择 身份认证 为 SQL SERVER 身份验证

-
设置 登录名 为 SA , 密码 为刚才设置的密码
-
连接成功
创建和查询数据
创建数据库
-
使用如下命令可以创建名为 TestDB 的数据库
CREATE DATABASE TestDB -
下面命令查询所有的所有数据库名
SELECT Name from sys.Databases -
上面两行命令输入后 , 实际没有立即执行 , 必须在下一行输入 GO , 将执行如上命令
GO
插入数据
创建名为 Inventory 的表并插入两条数据
-
选择数据库
USE TestDB -
建表
CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT) -
插入数据
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154); -
执行命令
GO
查询数据
-
通过 sqlcmd 输入如下命令查询所有数据
SELECT * FROM Inventory -
执行
GO
退出 sqlcmd 命令行工具
-
使用
QUIT命令退出 sqlcmdQUIT
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/17 01:43