使用Docker运行Microsoft SQL Server 2017
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。在文本发布和处理微服务中,我打算使用微软的SQL Server for Linux来做演示,于是也就在自己的docker-compose中加入了MS SQL Server的服务。其实在Docker中运行SQL Server是非常容易的,今天大概做个介绍吧。
启动Microsoft SQL Server 2017容器
下面是我目前WeText案例中用于搭建基础结构服务的docker-compose.yml文件(该文件将来还会变动,最新版本请参阅Github):
version: "3"
services:
mongodb:
image: mongo
volumes:
- ${MONGODB_DATABASE_VOLUME}
container_name: mongodb
ports:
- "27017:27017"
rabbit:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "4369:4369"
- "5671:5671"
- "25672:25672"
- "15672:15672"
container_name: rabbitmq
hostname: my-rabbitmq
volumes:
- ${RABBITMQ_DATA_VOLUME}
postgres:
image: postgres
ports:
- "5432:5432"
container_name: postgres
volumes:
- ${POSTGRESQL_DATA_VOLUME} mssql:
image: microsoft/mssql-server-linux:2017-latest
ports:
- "1433:1433"
container_name: mssql
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=G1veMeP@ss
这个docker-compose文件中包含了四个服务的定义,今天我们只关注最后一个,也就是mssql。可以看到:
- Microsoft SQL Server的Docker镜像名为:microsoft/mssql-server-linux,tag为2017-latest
- SQL Server在容器内侦听1433端口,也就是标准的SQL Server端口
- 启动SQL Server容器需要两个环境变量:ACCEPT_EULA=Y,表示接受最终用户许可协议;SA_PASSWORD=G1veMeP@ss,表示设置sa用户的密码。这个用户密码要符合强密码规范(数字、字母、大小写,至少8个字符),之后在客户端连接的时候,就需要使用这个密码登录服务器
当然,你可以不使用docker-compose,而是直接使用docker run,那么方法也是类似的,比如可以使用下面的语句:
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=G1veMeP@ss' \
-p 1433:1433 --name mssql \
-d microsoft/mssql-server-linux:2017-latest
同样也可以启动SQL Server容器。在Docker中运行SQL Server时,需要注意:
- 主机(host machine)的内存至少需要3.5GB左右
- Docker中的SQL Server是开发者版本(Developer Edition),功能与企业版相同,但是仅能用于开发或者测试环境,不得用于生产环境
连接SQL Server 2017
官方文档介绍使用docker exec命令,在已运行的SQL Server 2017容器中,执行sqlcmd命令进行连接和数据库使用。当然,也可以使用图形化的客户端,比如SQL Server Management Studio或者Visual Studio的Server Explorer来连接运行于Docker中的SQL Server 2017,方法与连接普通版本SQL Server的方法一样。例如,下面是在Visual Studio的Server Explorer中连接Microsoft SQL Server on Linux for Docker的效果:

参考文档
使用Docker运行Microsoft SQL Server 2017的更多相关文章
- Linux 上的 SQL Server 2017 的安装指南
一:介绍背景 微软在2016年 3 月首次对外宣布了 Linux 版的 SQL Server,并于2017年 7 月发布了首个公开 RC 版.前几日在美国奥兰多召开的微软 Ignite 2017 大会 ...
- Python和SQL Server 2017的强大功能
Python和SQL Server 2017的强大功能 摘要: 源:https://www.red-gate.com/simple-talk/sql/sql-development/power-pyt ...
- Win10 SQL Server 2017安装教程
Win10 SQL Server 2017安装教程 1:下载地址 2:开始安装 1:安装环境预备说明 还要注意就是要先下载这个VC++的更新,可以解决服务器安装不上的问题,下载链接 :Microsof ...
- CentOS随笔 - 5.CentOS7安装Sql Server 2017
前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 开发环境嘛, 作为.Net系Sql Server那是必备的. 听过Sql server可以安装在Linux上了 ...
- 在同一台机器上让Microsoft SQL Server 2000/ SQL2005/ SQL2008共存
可能很多朋友都遇到想同时在自己的机器上运行Microsoft SQL Server 2000以及Microsoft SQL Server 2005和Microsoft SQL Server 2008. ...
- CentOS7脱机安装SQL Server 2017
SQL Server on Linux也发布一段时间了,官方上支持Red Hat, SUSE, Ubuntu.手上没有以上Linux版本,选用了与Red Hat最接近的CentOS7.4来进行安装和测 ...
- CentOS7.5脱机安装SQL Server 2017(NEW)
发现搜到的都是在线下载安装的,都是只安装了mssql-server服务,没有mssql-server-agent服务.还以为linux下mssql没有agent服务呢.一番测试发现可以脱机安装,但是能 ...
- Amazon RDS 上的 Microsoft SQL Server » 导入和导出 SQL Server 数据库
导入和导出 SQL Server 数据库 Amazon RDS 支持使用完整备份文件 (.bak 文件) 对 Microsoft SQL Server 数据库进行本机备份和还原.您可以在单个便携式文件 ...
- Microsoft SQL Server Trace Flags
Complete list of Microsoft SQL Server trace flags (585 trace flags) REMEMBER: Be extremely careful w ...
随机推荐
- 【转】Mapreduce部署与第三方依赖包管理
Mapreduce部署是总会涉及到第三方包依赖问题,这些第三方包配置的方式不同,会对mapreduce的部署便捷性有一些影响,有时候还会导致脚本出错.本文介绍几种常用的配置方式: 1. HADOOP_ ...
- 利用python多线程实现多个客户端与单个服务端的远程ssh
本次实验设计两个方面的代码,第一个是客户端,代码如下: import os from socket import * c = socket(AF_INET,SOCK_STREAM) c.connect ...
- 记一次使用快速幂与Miller-Rabin的大素数生成算法
大家都知道RSA的加密的安全性就是能够找到一个合适的大素数,而现在判断大素数的办法有许多,比如Fermat素性测试或者Miller-Rabin素性测试,而这里我用了Miller-Rabin素性测试的算 ...
- 使用python实现后台系统的JWT认证(转)
今天的文章介绍一种适用于restful+json的API认证方法,这个方法是基于jwt,并且加入了一些从oauth2.0借鉴的改良. 1. 常见的几种实现认证的方法 首先要明白,认证和鉴权是不同的.认 ...
- asp.net core封装layui组件示例分享
用什么封装?自然是TagHelper啊,是啥?自己瞅文档去 在学习使用TagHelper的时候,最希望的就是能有个Demo能够让自己作为参考 怎么去封装一个组件? 不同的情况怎么去实现? 有没有更好更 ...
- lambda表达式杂谈
var personInfo = [ { name: "张三", age: 20, gender: "male" }, { name: "李四&quo ...
- C# 使用FileUpload控件上传图片,将文件转换成二进制进行存储与读取
状况描述: 需要上传文件,但是不想要保存到实体路径下,便可以用该功能来实现. 效果图: 点击[Upload]按钮,上传文件到数据库: 点击[Preview],预览文件: 具体实现: 前台: <t ...
- MySQL笔记 存储过程 游标 触发器
第二十三章 使用存储过程 MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就 ...
- MVVM框架解析(一)
花了一点时间看了一下微软开源MVVM代码,受义很多! 从代码整体上看,代码分为四大类, 从图中看不能明白我要表达的意思.显而意见!MainApplicationWindow.xaml是应用程序主窗口( ...
- RabbitMQ与AMQP协议
AMQP(Advanced Message Queuing Protocol, 高级消息队列协议)是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 ...