美文网首页Database TechAwesome Docker
在 Mac 下安装 MSSQL for Linux

在 Mac 下安装 MSSQL for Linux

作者: jacobbubu | 来源:发表于2017-04-28 23:28 被阅读1199次

我的开发环境一直是 Mac,最近一个项目要用到 MSSQL,因此开始尝试直接在 Docker for Mac 下运行 MSSQL for Linux 版本(之前只能在 Windows 环境下安装 MSSQL,单机开发需要用到虚拟机,带来了开发和测试的复杂性)。

首先按照官方的 安装步骤 安装,发现该容器运行一下之后,MSSQL 服务就会报错退出,这里讨论了错误的 来龙去脉。简单说,由于 Docker for Mac 自身实现的不完整,缺省的直接 Mapping 本地目录到 MSSQL 容器是不能运行的。

第一步: 创建一个数据卷容器 (Data Volume Container)

[Data Volume Container] (https://docs.docker.com/engine/tutorials/dockervolumes/#creating-and-mounting-a-data-volume-container) 的概念。

docker create -v /var/opt/mssql --name mssql \
  microsoft/mssql-server-linux \
  /bin/true

-v /var/opt/mssql 表示,如果将来其他容器如果挂载这个 Data Volume Container,那么将挂载到自己的/var/opt/mssql目录下,

--name mssql 是这个 Container 的名字。

因为该数据卷自身没有可运行的程序,因此基于 microsoft/mssql-server-linux Image 来创建,这样将来真正的 mssql 容器也是基于这个 Image 来创建,可以重用 Layers 信息。

第二步: 创建并运行一个 MSSQL for Linux 容器,挂载 mssql Container 来保存数据库数据

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Test@123'\
 -p 1433:1433 \
--volumes-from mssql \
-d --name sql-server \
microsoft/mssql-server-linux

同样是基于 microsoft/mssql-server-linux Image,但是其数据卷来自于之前创建的 mssql Data Volume Container。这个容器的名字是 sql-serve

这部完成之后,如果没有意外,你已经可以通过 localhost:1433 来连接数据库了,或者直接运行 sql-server 容器内的 sqlcmd:

docker exec -it sql-server /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Test@123

在交互模式下输入:

select Name from sys.databases;
go

就可以看到包含 master 数据库的 mssql 缺省数据库的名字。
如果觉得每次输入这么长的命令太繁琐,不如做个 Shell 的 Alias:

alias sqlcmd="docker exec -it sql-server /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Test@123"

今后在终端里就输入 sqlcmd 好了。

你可以用 Windows 版本的 SQLServer Management Studio 连接管理这个 MSSQL for Linux,也可以用 Mac 下的 SQLPro for MSSQL 来连接。

相关文章

网友评论

  • 40603f1d2cfb:我也遇到这个问题,原来是docker本身的问题,感谢!

本文标题:在 Mac 下安装 MSSQL for Linux

本文链接:https://www.haomeiwen.com/subject/cmjazttx.html