基于 Docker 在 macOS 下安装 SQL Server

基于 Docker 在 macOS 下安装 SQL Server

下学期的数据库原理与应用一门课需要学 SQL Server,但是去到 SQL Server 的官网发现并没有 macOS 版本的软件,只有 Windows、Linux、Docker 版本的,查了一下发现 SQL Server 是微软家的软件,对 macOS 支持不好似乎也是理所当然的事情了。在询问了学长后,我有了三个可以选择的解决方案,

第一,在 macOS 上运行 Windows 虚拟机或安装双系统;
第二,用 MySQL 代替 SQL Server,据说语法几乎一样;
第三,在 Docker 中安装 SQL Server。

由于我的 Mac 硬盘空间已经所剩无几了,安装虚拟机或双系统过于捉襟见肘,Pass。用 MySQL 代替 SQL Server 的话,毕竟两个还是有些微区别,不知道会出什么岔子,Pass,所以只剩下唯一一个选择了,用 Docker 安装 SQL Server。

安装配置 Docker

我先查了一下 Docker 是什么,简单的来说,为了解决软件环境配置复杂,同时避免虚拟机占用资源多且反应迟钝的问题, Linux 发展出了另一种叫做 Linux Containers ,Linux 容器,缩写为 LXC 的技术,比起虚拟机它不模拟完整的操作系统环境,只对进程进行隔离,实现容器中的进程与底层系统隔离。而 Docker 就是 LXC 的一种封装,是现在最流行的 Linux 容器解决方案。

知道了 Docker 是什么,直接到 Docker 的官网下载 macOS 版本的软件即可,安装好后需要对 Docker 进行一下配置,由于 Docker 的镜像服务器是在国外,直接访问的话速度太慢,所以要配置一个国内的镜像站点进行加速。在这里我选择的是七牛云的镜像站点 https://reg-mirror.qiniu.com/,以此为例介绍如何配置。我在网上搜索到的所有关于配置镜像加速服务器的教程都说,在顶部点击 Docker 图标,选择 Preferences 菜单,再选择 Daemon 子项,然后在 Registry mirrors 列表中填入需要加入的镜像站点即可。

但是在新版本的 Docker 中上述流程已不再适用,正确的配置方法还是打开 Preferences 菜单,选择 Docker Engine 子项,可以看到一个 json 格式的配置文件,在其中插入:

1
2
3
"registry-mirrors": [
"https://reg-mirror.qiniu.com/"
]

即可完成对镜像加速服务器的配置,打开终端,输入 docker info 命令查看相关信息,检查 Registry Mirrors 项目是否更改为目标域名。

拉取并运行 SQL Server 容器镜像

打开终端键入:

1
sudo docker pull mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04

从镜像服务器上拉取 SQL Server 2019 Linux 的容器镜像,注意在这一步中如果发现镜像下载速度过慢,则返回上一步重新配置别的镜像加速服务器。

镜像文件下载完毕后,键入:

1
2
3
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd>" \
-p 1433:1433 --name sql1 \
-d mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04

将会创建一个使用 SQL Server 2019 开发版的容器。

参数 -e "SA_PASSWORD=" 参数为 SQL Server 的密码,至少需要包含8个字符,且符合 SQL Server 密码强度要求
参数 -p 1433:1433 会将主机环境中的 TCP 端口1433映射到容器中的 TCP 端口1433,
参数 --name sql1 将会为容器指定一个自定义名称,
参数 -d mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04 是容器镜像名称。

然后键入:

1
sudo docker ps -a

查看 Docker 容器,将会返回容器的镜像、状态、创建时间、端口、名称等信息。

接下来使用:

1
sudo docker exec -it name "bash"

在运行的容器内部启动交互式的 Bash Shell,其中 name 为创建容器时由 --name 参数指定的名称。由于默认情况下 sqlcmd 不在路径中,所以需要指定完整路径。

1
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "password"

其中 password 为之前指定的密码,此时应该显示 sqlcmd 命令提示符 1> ,此时就可以在 sqlcmd 中输入各种 SQL Server 语句进行执行与操作了。

从 DataGrip 连接至 SQL Server

打开 DataGrip 后添加 Data Source 选择 Microsoft SQL Server,输入刚才设置的用户名、端口、密码,Test Connection 通过后就可以在 Data Grip 中使用 Docker 中的 SQL Server 了,需要注意的是 DataGrip 中的 User 并非我们为容器指定的指定的自定义名称,按照如上命令创建的 SQL Server 容器 User 为 SA。

至此就成功的在 macOS 上通过 Docker 将 SQL Server 运行起来了。


基于 Docker 在 macOS 下安装 SQL Server
https://wenchanyuan.com/install_sqlserver_on_macos/
作者
蟾圆
发布于
2020年2月10日
许可协议