场景
CentOS7中Docker的安装与配置
首先按照上面在CentOS7中安装Docker
注:
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
1、在CenoOS上新建目录mssqlvol,在此目录下新建data、log、secrets三个目录,用来做SqlServer的数据卷映射。
2、拉取镜像
3、启动
命令详解:
-e 'ACCEPT_EULA=Y' 代表同意SQL SERVER使用条框,否则无法使用。
-e 'MSSQL_SA_PASSWORD=badao123456' 设置SA用户的密码,要求密码长度必须至少为8个字符,并包含以下四组中的三组字符:大写字母、小写字母、以10为基数的数字和符号。
-p 1433:1433 将宿主机1443与容器1443端口进行映射
后面三个-v都是数据卷的映射
-d 后台运行
4、开放防火墙端口
5、进入容器
后面跟的是容器ID
然后到/opt/mssql-tools/bin下,使用sqlcmd连接并创建一个表以及查询所有表
通过语句
效果:
输入:
退出语句
输入
退出容器
6、连接SqlServer
下载SSMS
下载之后安装,安装之后连接
进入到上面映射的数据卷存放data数据的地方
可以看到数据库映射也成功了
7、踩坑1
容器启动后,过一会就没了。可以通过查看日志的方式排查
查看容器运行日志,后面跟的是容器ID
日志提示:
Setup FAILED copying system data file 'C:\templatedata\master.mdf' to '/var/... 5(Access is denied)
原因是创建的数据卷映射的目录权限不够
赋予权限
然后运行容器时使用sudo docker run,原来是直接使用docker run
8、踩坑2
再次运行还是一会就停止了。再次查看日志
The password does not meet SQL Server password policy requirements because it is not complex enough. The password must be at least 8 characters long and contain characters from three of the following four sets: Uppercase letters, Lowercase letters, Base 10 digits, and Symbols
这是因为密码太简单了,不符合要求
密码长度必须至少为8个字符,并包含以下四组中的三组字符:大写字母、小写字母、以10为基数的数字和符号
9、踩坑三
使用Navicat连接时提示:
远程主机强迫关闭了一个现有的连接,Client unable to establish connection(10054)
下载SSMS进行连接,可能跟没开代理有关,所以使用Navicat连接不上。
10、踩坑四
日志中提示:This program requires a machine with at least 2000 megabytes of memory
这是因为这里使用的是虚拟机,而SqlServer要求至少2G以上的内存。
11、官方教程
可以参照官方教程进行部署和配置