随着.Net Core迭代,大家也都用上了Linux用上了Docker。跟.Net经常配套使用的SQL SERVER以前一直是windows only,但是从SQL Server 2017开始已经支持运行在Docker上,也就说现在SQL Serer已经可以运行在Linux/Docker下了。
下来将演示SQL Server 2019运行在Docker下

  • 先决条件

  1. 任何受支持的 Linux 分发或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。

  2. 有关详细信息,请参阅 Install Docker(安装 Docker)。 Docker overlay2 存储驱动程序。 这是大多数用户的默认设置。 如果发现自己未使用此存储提供程序并且需要进行更改,请参阅 docker 文档中有关配置 overlay2 的说明和警告。

  3. 至少 2 GB 的磁盘空间。

  4. 至少 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 容器映像的更多相关文章

  1. 使用Docker运行SQL Server

    现在.net core已经跨平台了,大家也都用上了linux用上了docker.跟.net经常配套使用的SQL SERVER以前一直是windows only,但是从SQL Server 2017开始 ...

  2. 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs

    原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...

  3. 关于解决Mac使用docker安装SQL server for Linux 中文乱码问题

    本人是Mac的追随者,无奈本学期数据库课要求使用Microsoft的SQL server.但是Microsoft并没有发布SQL server for Mac ,笔者使用Google搜索后, 发现可以 ...

  4. cmd运行sql server安装

    cmd运行sql server安装 SQL2012非群集安装_更新到最新版本.bat setup.exe /UpdateSource=.\hotfix\Latest /ACTION="Ins ...

  5. 运行sql server profiler所需的权限

    ********运行Sql Server Profiler所需的权限(performance)*********/ --EG. -- 使用TRACE帐户(Performancetest)跟踪Sql S ...

  6. 初识Docker和Windows Server容器

    概览 伴随着Windows Server 2016 Technical Preview 3 (TP3)版本的发布,微软首次提供了Windows平台下地原生容器.它集成了Docker对Windows S ...

  7. [Docker] - 安装 SQL Server 2019,使用 SSMS 进行登录

    镜像仓库 https://hub.docker.com/_/microsoft-mssql-server 拉取镜像并进行安装(以 SQL Server 2019 CTP 3.2 为例) docker ...

  8. Docker windows nano server容器中安装ssh实现远程登录管理

    [问题] 使用ServiceMonitor.exe作为前台进程运行起来的容器无法attach. 无法远程连接到运行中的容器中进行管理. [解决方法] 在container中新建管理员用户,通过SSH实 ...

  9. 在Win8.1系统下如何安装运行SQL Server 2005 (以及安装SQL Server 2005 Express打补丁)

    在Win8.1系统下SQL Server 2005 安装失败怎么办? 需要替换两个文件及打sqlserver sp4补丁. 以下是操作过程. 按正常情况,在Win8/Win8.1系统下安装微软的SQL ...

随机推荐

  1. JS原生练习

    1.输出1-10000之间的数 <script> for(i=1;i<=10000;i++) { document.write(i + "<br>") ...

  2. c++的一些习惯

    1.显示转换:类型说明符(表达式),如a = int(z) 2.枚举类型enum:专门用来解决对数据的合法性检查问题,如一星期七天,如果用int/char等数据类型描述时,则需要对数据的合法性检查.声 ...

  3. 手把手搭建一个属于自己的在线 IDE

    背景 这几个月在公司内做一个跨前端项目之间共享组件/区块的工程,主要思路就是在 Bit 的基础上进行开发.Bit 主要目的是实现不同项目 共享 与 同步 组件/区块,大致思路如下: 在 A 项目中通过 ...

  4. day32 Pyhton hashlib模块 总结异常处理

    一.当用明文密码进行信息存储的时候,会导致密码的泄露,如何解决问题 通过导入hashlib模块,利用里面存在的算法对字符串进行加密计算得到一串密文的结果 1.这个过程不可逆 2.对于同一个字符串,同一 ...

  5. 阅读-Calibre Library转PDF、EPUB配置

    提示:如果想恢复默认设置,点击"恢复默认值"即可 -----EPUB (MOBI同理)----- 目标:解决转换过程中图片清晰度丢失问题(分辨率太低) 右击-转换书籍-逐个转换 输 ...

  6. 【博弈论】CF 1215D Ticket Game

    题目大意 洛谷链接 给出一个长度为\(n\)的由数字组成的字符串(\(n\)是偶数).但可能有偶数个位上的数字为?. 现在有两个人\(A\)和\(B\),在?的位置上填\(0\)~\(9\)的数,一直 ...

  7. centos8平台用redis-cli对redis5监控和管理

    一,监控redis-server上正在执行的命令 1,打开a终端: [root@yjweb log]# /usr/local/soft/redis5/bin/redis-cli -h 127.0.0. ...

  8. centos8平台使用strace跟踪系统调用

    一,strace的用途 strace  是最常用的跟踪进程系统调用的工具. 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectfore ...

  9. centos 开机启动服务 systemctl

    systemctl 实现开机自启服务 转载起一个好听的名字 最后发布于2018-06-26 13:49:06 阅读数 13473  收藏 展开 systemctl是RHEL 7 的服务管理工具中主要的 ...

  10. HTML轮播(1)

    前言 要想实现轮播,我们就得先把最基础的功能实现,那就是滚动,实现了滚动后就可以继续扩展,完成更多想要的效果 CSS <style> #LB { width: 100%; height: ...