通过 Docker 实现在 Linux 容器中运行 Microsoft SQL Server 数据库

出品丨Docker公司(ID:docker-cn)

编译丨小东

每周一、三、五晚6点10分 与您不见不散

说在前面

今天我将继续为大家带来有关Docker 的系列教程,这篇文章主要是帮助大家了解如何在Linux容器中使用Microsoft SQL Server (PS:这个教程简单易懂,一学即会)。一旦您完成了整个教程,您就可以从docker容器外部(我将为您演示使用PowerShell、SQL Server Management Studio(SSMS)和LINQPad三种方式)对您的数据库运行一个简单的查询。

背 景

最近我买了一台普通的笔记本电脑,它并没有很强大的性能(这次我将重点放在了便携性和电池的寿命上)。由于这样那样的原因,我觉得这是一个很好的机会,让我可以花更多的时间来关注Docker ,而不是像以往那样拼命的往电脑中安装各种软件。

我认为使用Docker 的好处之一就是软件开发人员可以在Docker 中进行合理的设置,他们可以省去原先在本地安装的所有麻烦从而轻松地得到一个本地的SQL Server实例。由于我使用的是Windows 系统的笔记本电脑,所以我选择了Docker for Windows 。但是实际上Docker 是可以跨平台使用的,所以如果您使用的是Mac或Linux机器,您仍然可以遵循这篇教程,这是不是很棒呢!

前期准备

如果您尚未安装Docker,那么您可以参考之前的文章,我就不在这里赘述了,如果您遇到任何问题,都可以在文尾处留言,我会在第一时间帮您解答。

启动Docker ,您需要从Docker Hub中下载最新的MS SQL Server镜像。

现在打开PowerShell窗口(Win+X或I,不需要管理员模式)来进行以下步骤:

首先,我们需要输入以下命令来下载镜像(解压完成后大约1.35GB)。

docker pull microsoft/mssql-server-linux:2017-latest

然后我们可以运行“docker images”来进行确认。

运行容器

接下来,您需要运行它。为此,您需要接受许可协议,并为管理员帐户指定一个安全的密码。如果您想要开发者版本以外的东西,那么您也可以指定PID。还有很多其他的环境变量供您进行设置,您可以参考https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-environment-variables(例如您可以通过MSSQL_TCP_PORT = nnnn来更改内部的1433端口)

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Str0ngPassword!' -p 1401:1433 -d --name=tomssl_sql microsoft/mssql-server-linux:latest

注意:在Linux上连接到MS SQL时,您必须连接用户名和密码。您不能使用Windows身份验证进行连接。

关于端口映射的注意

端口映射是通过“-p host port:container port”进行指定的。

因此“-p 1401:1433”意味着主机(我的笔记本电脑)上的1401端口会映射到容器中的1433端口。如果您以前曾经使用过MS SQL Server,那么您可能知道它会默认监听这个1433端口。这意味着,我从容器外部创建的任何连接字符串都需要包含1401端口。

一、通过PowerShell进行查询

现在我们的容器已经在运行中了,接下来让我们运行一个简单的查询来检验一下我们的成果。在您的PowerShell窗口中,输入以下命令来运行交互式的slqcmd工具(从您的镜像中)。

docker exec -it tomssl_sql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa

如图所示,进入Str0ngPassword后!输入以下两条命令:

1> SELECT @@VERSION

这时,该图显示镜像正在运行,然后您就可以运行查询了。

现在就让我们离开镜像运行界面,通过尝试其他几种方式来进行查询。

二、使用SSMS 2017进行查询

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180205G0Z4TB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券