部署SQL Sever Docker容器 你需要这些命令

日期: 2017-05-17 作者:Michael Otey翻译:杨宏玉 来源:TechTarget中国 英文

容器化的APP 已经十分普遍,现在你已经可以在容器中运行数据库了,本文将介绍一些命令,你可以使用这些命令,定制Docker容器中的SQL Server镜像。 当你为应用构建容器时,你还需要决定SQL Server的处理策略,它们可以单独存在,也可以一起放置在容器中。 你可以使用Docker Hub中存在的SQL Server镜像创建SQL Server容器。目前有四个镜像可用于创建SQL Server Docker容器:  SQL Server vNext Community Technology Preview for Linux — microsoft/mssql-s……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

容器化的APP 已经十分普遍,现在你已经可以在容器中运行数据库了,本文将介绍一些命令,你可以使用这些命令,定制Docker容器中的SQL Server镜像。

当你为应用构建容器时,你还需要决定SQL Server的处理策略,它们可以单独存在,也可以一起放置在容器中。

你可以使用Docker Hub中存在的SQL Server镜像创建SQL Server容器。目前有四个镜像可用于创建SQL Server Docker容器:

  •  SQL Server vNext Community Technology Preview for Linux -- microsoft/mssql-server-linux
  • SQL Server 2016 Express Edition for Windows -- microsoft/mssql-server-windows-express
  • SQL Server 2016 Evaluation Edition for Windows -- microsoft/mssql-server-windows
  • SQL Server 2016 Developer Edition for Windows -- microsoft/mssql-server-windows-developer

虽然你可以使用这些镜像来运行SQL Server容器,但它们却不太适用于大规模生产环境。SQL Server vNext是SQL Server的一个Linux实现,目前仍是预览版。SQL Server 2016 Express可扩展性十分有限。SQL Server 2016 Evaluation Edition 的使用期限只有180天,SQL Server 2016 Developer Edition版不允许应用在生产环境。

如果您想在容器中运行SQL Server 2016 Standard 或者 Enterprise Edition,并应于于生产环境,你该怎么做呢?

我将向你展示使用Windows Server Core和SQL Server 2016 Standard Edition来构建定制的SQL Server容器。

构建镜像层

首先,将SQL Server安装介质复制到容器所在主机的一个本地磁盘上。想要获得更多关于在Windows Server主机配置容器的信息,请参如“何构建第一个SQL服务器容器。”一文。

在这个例子中,我将使用文件夹c: SQLinstall,然后使用Windows Server Core镜像创建一个容器,请使用如下Docker命令将c: SQLinstall文件夹附加到容器中。

docker run -d -ti --name SQLStd --hostname SQLStd -v C:/SQLinstall/:C:/SQLinstall/ microsoft/windowsservercore

- d参数表示这将是一个在后台运行的独立容器。-name参数用于给容器起一个友好的名字。-host名参数指定容器所在的主机的主机名。- v参数指定挂载的本地磁盘。在这个例子中,这个磁盘中包含了SQL Server安装介质。

接下来,指定Windows Server Core。

构建定制的SQL Server镜像

使用Docker exec命令,打开交互式命令提示行,来安装SQL Server:

docker exec -it SQLStd cmd

这个命令将为容器启动一个交互式命令行。

接下来,使用cd命令进入到c: SQLInstall目录,然后运行如下命令,启动SQL Server安装程序:

cd c:sqlinstall

Setup.exe /Q /ACTION=Install /FEATURES=SQL,IS /INSTANCENAME=MSSQLSERVER /SQLSVCACCOUNT="NT AuthoritySystem" /SQLSYSADMINACCOUNTS="SQLStdAdministrator" /AGTSVCACCOUNT="NT AUTHORITYNetwork Service" /SECURITYMODE=SQL /SAPWD="MyPa55w0rd" /TCPENABLED=1 /IACCEPTSQLSERVERLICENSETERMS=1

/ Q开关表示设置为无人值守。/ACTION开关表示SQL Server将被安装。/FEATURE开关控制那些功能将被安装。SQL和IS表示SQL Server关系引擎和Integration Services将被安装。/INSTANCENAME指定新的SQL Server实例将使用默认的MSSQLSERVER实例。/ SQLSVCACCOUNT指定运行SQL Server服务的账户。/ SQLSYSADMINACCOUNTS参数将为sysadmin 创建一个登录信息。/ AGTSVCACCOUNT指定运行SQL Server代理服务的账号。/ SECURITYMODE参数表明将使用SQL Server身份验证。/ SAPWD参数提供了系统管理员账户和密码。/ TCPENABLED参数表示允许使用TCP / IP协议进行远程连接。/ IACCEPTSQLSERVERLICENSETERMS = 1这个参数是选择无人值守安装时必须的设置的。

想要获得从命令行安装SQL Server 2016更完整的信息,请参考“使用命令提示符安装SQL Server 2016”一文。无人值守安装SQL Server的结果如图2所示。

构建定制的SQL Server镜像

安装 SQL Server 2016 Standard Edition

无人值守安装首先会显示一个版权提示。如果你提供所有了必需的参数,它将运行几分钟,然后显示安装消息,完成后返回到命令提示符状态。

至此,SQL Server已经安装在Windows Server Core 容器中,你可以使用Docker命令,使用该容器创建一个新的镜像。

您还可以在新容器中创建用户数据库。但需要注意的时,任何对这个数据库的更改在容器停止后都将会丢失。或者,最好在运行时把一个外部存储上的数据库附加到容器上。

要把这个容器提交到新镜像上,你首先要运行Docker stop命令来停止容器。因为Windows服务器不支持从运行状态的容器上创建镜像。容器停止之后,可以使用Docker commit命令创建一个新容器镜像。由于新镜像包含Windows Server Core,还包含SQLServer安装文件,Docker需要一定的时间来创建新的镜像。在图三中,你可以看到Docker命令停止了容器,提交容器到新镜像,然后列出所有本地镜像。

Docker stop SQLStd

Docker commit SQLStd teca/sqlstd1:latest

Docker images

构建定制容器

Docker Hub 上的SQL Server 镜像

现在可以开始使用Docker run来启动新的SQL Server Standard Edition容器了。在这个例子中,新镜像的名字是teca / sqlstd1。它将运行Windows Server Core,外加上一个具有完全功能的SQL Server 2016 Standard Edition。下面的列表显示了如何启动新容器,以及如何附加一个存储在外部存储上的AdventureWorks2014数据库。下面是一个使用Docker run命令运行新的SQL Server 容器的例子:

docker run -d -ti -p 1433:1433 --name SQLStdContainer -v C:/temp/:C:/temp/ -e attach_dbs="[{'dbName':'AdventureWorks2014','dbFiles':['C:\temp\AdventureWorks2014_Data.mdf','C:\temp\AdventureWorks2014_log.ldf']}]" teca/sqlstd1

此时,你已经可以连接到定制的SQL Server 实例,像使用其他实例一样使用它。你可以使用Docker inspect 命令来查询SQL Server 的TCP/IP 地址:

docker inspect -format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' SQLStdContainer

你可以使用SQL Server Management Studio (SSMS)连接到容器中的SQLServer实例,在打开一个数据库连时,你需要提供TCP / IP地址,端口号1433(逗号分隔)。SSMS将连接到定制SQL Server Standard Edition容器,如下图所示。

构建定制容器

到此为止,你已经可以把SQL Server Docker 容器部署到生产环境了。

翻译

杨宏玉
杨宏玉

TechTarget特邀编辑。北京邮电大学计算机科学与技术专业硕士。熟悉软件开发流程,对系统管理,网络配置,数据库应用等方面有深入的理解和实践经验。现就职于IBM(中国)投资有限公司,从事IBM服务器相关软件的开发工作。业余时间喜欢游泳登山,爱健身,喜欢结交朋友。

相关推荐