随着.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. 【开源】Springboot API 一键生成器

    Springboot API 一键生成器 写这个项目,最大的想法就是:不做CRUD 程序猿 Springboot 在我们平时开发项目当中,是如此的常用.然而,比如平时我们写的一些: XX 管理系统 X ...

  2. mycat相关配置文件和参数解析

    #vi /usr/local/mycat/conf/schema.xml<!--######################################################### ...

  3. 多测师讲解requests __上_高级讲师肖sir

    1.三种接口接口请求方式 # # 在python当中接口的请求方式有哪些:# import requests # 导入requests接口库# # # # 请求方式有三种:# # # # 第一种:# ...

  4. day28 Pyhton 面向对象 继承

    1.昨日回顾 类的命名空间 静态属性\动态属性(方法) 对象的命名空间 #对象的属性 #类指针:对象能够通过这个类指针找到类 #静态属性:属于类,多个对象共享这个资源 #尽量用类名来操作静态属性 #对 ...

  5. C++分隔字符串split

    split C++标准库中没有提供split分隔字符串的函数,哎. 实现一 下面的实现需要指定分隔符的集合delimiters,以及是否将连续的分隔符看作同一个分隔compress : enum cl ...

  6. pytest文档48-切换 base_url 测试环境(pytest-base-url)

    前言 当我们自动化代码写完成之后,期望能在不同的环境测试,这时候应该把 base_url 单独拿出来,能通过配置文件和支持命令行参数执行. pytest-base-url 是 pytest 里面提供的 ...

  7. OpenCV计算机视觉学习(5)——形态学处理(腐蚀膨胀,开闭运算,礼帽黑帽,边缘检测)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 形态 ...

  8. navicate premium黄色版本破解下载

    百度网盘下载 提取码: tsua 按照电脑安装32位或者64位 安装完成后点击最后一个进行破解汉化

  9. 标签中colgroup的属性

    如需对全部列应用样式,<colgroup> 标签很有用,这样就不需要对各个单元和各行重复应用样式了. <colgroup> 标签只能在 table 元素中使用. 可选的属性 属 ...

  10. python坐标获取经纬度或经纬度获取坐标免费模块--geopy

    一.官方文档 https://github.com/geopy/geopy 二.模块安装 pip3 install geopy 三.简单实用 from geopy.geocoders import N ...