由于课程需要,个人电脑需要装上Microsoft SQL Server 2012,但是呢,遇到Windows Update的问题无法安装,原因是我把Windows Update给禁用了,但是呢,又不想开启Windows Update,但是呢,MSSQL还是要用的嘛。所以呢,我想到在docker里面装MSSQL会怎么样,没想到还真的可以[1]😂。
拉取镜像
从docker hub官网[2]上找到MSSQL,欢天喜地,按照上面的提示拉取镜像。
值得注意的是,只有从2017版本开始MSSQL才有docker版,也就是说想装MSSQL2012是不可能的哈。这里我下载的是2017企业版,需要的话可以改成2019版的。
1 | docker pull mcr.microsoft.com/mssql/server:2017-latest |
残酷的事实,这里连接微软也不好。试了一天,难受得要命,最终受不了了,另寻出路,终于找到解决方案:使用Azure镜像[3]。
1 | docker pull mcr.azk8s.cn/mssql/server:2017-latest |
终于拉取了镜像。
运行容器
现在docker应该有mssql镜像了。(不要管图中第一个额,其实我2019的也装了)
1 | docker images |
根据docker hub给的指引,开启容器:(这里密码改成自己的,密码最少8位而且要强,不然启动出错)
1 | docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=(你的密码)' -p 1433:1433 --name "mssql" -d mcr.azk8s.cn/mssql/server:2017-latest |
从图中可以看到容器正常运行,映射到端口1433。额那怎么连接数据库呢?
1 | docker-machine url |
通过这个地址以及端口1433可以拼接成数据库地址:
192.168.99.101:1433
MSSM
上微软官网下载MSSM,我下载的是2017版本的MSSM。
打开MSSM,输入数据库地址,用户名(sa),密码,连接即可
通过查询版本,可以看到使用的是MSSQL2017开发版 on Linux版本
新建数据库,设计表这些功能应该是没问题的了,如果出现异常,很可能是因为版本不对。比如我MSSQL2019配MSSM2017,结果是不行的,无奈才重装MSSQL。
SQLCMD
有同学可能不想用MSSM也是可以的,用sqlcmd就行,具体这样;
1 | docker exec -it mssql "bash" |
附加内容
查看容器输出内容,打log就行
1 | docker logs mssql |
总而言之
在docker装MSSQL比在实体机装MSSQL好玩得多,烦恼也少。
参考: