Docker 运行 SQL Server 容器映像
随着.Net Core迭代,大家也都用上了Linux用上了Docker。跟.Net经常配套使用的SQL SERVER以前一直是windows only,但是从SQL Server 2017开始已经支持运行在Docker上,也就说现在SQL Serer已经可以运行在Linux/Docker下了。
下来将演示SQL Server 2019运行在Docker下
先决条件
任何受支持的 Linux 分发或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。
有关详细信息,请参阅 Install Docker(安装 Docker)。 Docker overlay2 存储驱动程序。 这是大多数用户的默认设置。 如果发现自己未使用此存储提供程序并且需要进行更改,请参阅 docker 文档中有关配置 overlay2 的说明和警告。
至少 2 GB 的磁盘空间。
至少 2 GB 的 RAM。 Linux 上的 SQL Server 的系统要求。
拉取并运行 2019 容器映像
Linux Docker 从 Microsoft 容器注册表中拉取 SQL Server 2019容器映像
sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
Windows Docker Desktop下从 Microsoft 容器注册表中拉取 SQL Server 2019容器映像,以管理员身份运行CMD或PowerShell执行一下命令
docker pull mcr.microsoft.com/mssql/server:2019-latest

待结束后,执行以下命令即可看到我们拉取成功的镜像
docker images

要使用 Docker 运行容器映像,可以从 Bash Shell (Linux/macOS) 或提升的 PowerShell 命令提示符使用以下命令,Linux下使用sudo提升运行权限
docker run -v /d/MSSQL:/var/opt/mssql --name sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=2019@123' -p 17951:1433 -d mcr.microsoft.com/mssql/server:2019-latest
如下图已运行成功

参数说明:
| 参数 | 说明 |
|---|---|
| -e 'ACCEPT_EULA=Y' | 设置此参数说明同意 SQL SERVER 使用条款 , 否则无法使用 |
| -e 'SA_PASSWORD=密码' | 此处设置 SQL SERVER 数据库 SA 账号的密码 |
| -p 17951:1433 | 将宿主机 17951端口映射到容器的 1433 端口 |
| --name sqlserver | 设置容器名为 mssql |
| -v /d/MSSQL:/var/opt/mssql | 将windnows宿主机目录D:\MSSQL 映射到容器 /var/opt/mssql , 方便备份数据 |
| -d | 在后台运行 |
查看 Docker 容器
docker ps -a
应会看到与以下屏幕截图类似的输出

连接到 SQL Server
使用客户端工具Microsoft SQL Server Management 连接

连接成功

我们在客户端Microsoft SQL Server Management 创建测试数据Test,可以在我们本地映射的目录D:\MSSQL\data看到

如需还原数据库我们可将xxx.bak,文件拷贝至D:\MSSQL\data在客户端工具中还原即可,如下图

使用命令在容器内部交互
使用 docker exec -it 命令在运行的容器内部交互,下来我们将结束通过命令在容器内部交互还原数据 /查询/备份等。
docker exec -it sqlserver bash

使用命令在内部连接,在容器内部使用 sqlcmd 进行本地连接。 默认情况下,sqlcmd 不在路径之中,因此需要指定完整路径。
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P [数据库密码]

如果成功,应会显示 sqlcmd 命令提示符:1>
在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL 命令以创建测试数据库:
CREATE DATABASE MyDB

在下一行中,编写一个查询以返回服务器上所有数据库的名称
SELECT Name from sys.Databases
前两个命令并没有立即执行。 在新行中键入 GO 以执行以前的命令:
GO

插入数据
接下来创建一个新表 MyTable,然后插入两个新行。
在 sqlcmd 命令提示符中,将上下文切换到新的MyDB 数据库:
USE MyDB
创建名为 MyTable的新表:
CREATE TABLE MyTable (id INT, name NVARCHAR(50), quantity INT)
并为MyTable表插入数据
INSERT INTO MyTable VALUES (1, 'banana', 150); INSERT INTO MyTable VALUES (2, 'orange', 154);
要执行上述命令的类型 GO:
GO

在Microsoft SQL Server Management中查看数据

在容器内部查询数据
SELECT * FROM MyTable WHERE id =1;
执行以上命令
GO

要结束 sqlcmd 会话,请键入 QUIT:
今天就分享至此,感谢你的阅读。
Docker 运行 SQL Server 容器映像的更多相关文章
- 使用Docker运行SQL Server
现在.net core已经跨平台了,大家也都用上了linux用上了docker.跟.net经常配套使用的SQL SERVER以前一直是windows only,但是从SQL Server 2017开始 ...
- 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs
原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...
- 关于解决Mac使用docker安装SQL server for Linux 中文乱码问题
本人是Mac的追随者,无奈本学期数据库课要求使用Microsoft的SQL server.但是Microsoft并没有发布SQL server for Mac ,笔者使用Google搜索后, 发现可以 ...
- cmd运行sql server安装
cmd运行sql server安装 SQL2012非群集安装_更新到最新版本.bat setup.exe /UpdateSource=.\hotfix\Latest /ACTION="Ins ...
- 运行sql server profiler所需的权限
********运行Sql Server Profiler所需的权限(performance)*********/ --EG. -- 使用TRACE帐户(Performancetest)跟踪Sql S ...
- 初识Docker和Windows Server容器
概览 伴随着Windows Server 2016 Technical Preview 3 (TP3)版本的发布,微软首次提供了Windows平台下地原生容器.它集成了Docker对Windows S ...
- [Docker] - 安装 SQL Server 2019,使用 SSMS 进行登录
镜像仓库 https://hub.docker.com/_/microsoft-mssql-server 拉取镜像并进行安装(以 SQL Server 2019 CTP 3.2 为例) docker ...
- Docker windows nano server容器中安装ssh实现远程登录管理
[问题] 使用ServiceMonitor.exe作为前台进程运行起来的容器无法attach. 无法远程连接到运行中的容器中进行管理. [解决方法] 在container中新建管理员用户,通过SSH实 ...
- 在Win8.1系统下如何安装运行SQL Server 2005 (以及安装SQL Server 2005 Express打补丁)
在Win8.1系统下SQL Server 2005 安装失败怎么办? 需要替换两个文件及打sqlserver sp4补丁. 以下是操作过程. 按正常情况,在Win8/Win8.1系统下安装微软的SQL ...
随机推荐
- c 判断端口是否已被使用
isPortOpen.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include & ...
- ansible-playbook-jinja2管理nginx配置文件
1. 案例1:创建jinja2的nginx的主配置文件 1) 编写jinja2的nginx的主配置文件 1 [root@test-1 jinja2]# vim /ansible/jinja2/tes ...
- iOS使用NSTextAttachment添加图片,图片模糊
最近在忙的项目中,需要处理富文本的相关内容,产品需求并不复杂,所以想着用TextKit处理,顺便学习一下,没想到直接掉坑.在此记录一下(都是血泪史),顺便为有需要的小伙伴提供参考. // Add th ...
- Java工程师应该掌握的知识,按重要程度排出六个阶段如下
第一阶段:计算机组成原理.数据结构和算法.网络通信原理.操作系统原理: 第二阶段:Java基础.JVM内存模型和GC算法.JVM性能调优.JDK工具.设计模式: 第三阶段:Spring系列.Myb ...
- MeteoInfoLab脚本示例:CloudSAT Swath HDF数据
读取CloudSAT HDF Swath数据,绘图分上下两部分,上面是时间和高度维的Radar Reflectivity Factor二维图,下面是卫星轨迹图.示例程序: # Add file f = ...
- BUUCTF-misc九连环 详解
这个没什么玄学,我们解压出来一张照片,放到hxd中搂一眼,最后结尾的那几行中看到了zip压缩包的结尾标识符,难道这里面还有压缩包,于是我们就formostlrb 果然有图片有压缩包 我们打开压缩包看到 ...
- 扫描仪扫描文件处理-Photoshop批处理内存不足问题解决
一次批处理上千张扫描图片,如果提示内存不足,这时候需要修改操作系统虚拟内存.最小值:512(512M),最大值建议51200(50G). 同时设置让Photoshop使用100%.
- linux mount挂载命令
[root@localhost src]# mount 查询系统中已经挂载的设备 [root@localhost src]# mount -a 依据配置文件 /etc/fstab的内容,自动挂载
- Python初识和变量基础
Python是面向对象,动态解释型和强类型的语言 编译型: 将代码一次性全部编译成二进制,然后再执行 优点:执行效率高. 缺点:开发效率低. 代表语言:C 解释型: 逐行解释成二进制,逐行运行 优点: ...
- Python之format字符串格式化
1.字符串连接 >>> a = 'My name is ' + 'Suen' >>> a 'My name is Suen' >>> a = 'M ...