场景
CentOS7中Docker的安装与配置:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119028701
首先按照上面在CentOS7中安装Docker
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
1、在CenoOS上新建目录mssqlvol,在此目录下新建data、log、secrets三个目录,用来做SqlServer的数据卷映射。
2、拉取镜像
docker pull mcr.microsoft.com/mssql/server:2019-latest
3、启动
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=badao123456' -p 1433:1433 -v /mssqlvol/data:/var/opt/mssql/data -v /mssqlvol/log:/var/opt/mssql/log -v /mssqlvol/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/mssql/server:2019-latest
命令详解:
-e 'ACCEPT_EULA=Y' 代表同意SQL SERVER使用条框,否则无法使用。
-e 'MSSQL_SA_PASSWORD=badao123456' 设置SA用户的密码,要求密码长度必须至少为8个字符,并包含以下四组中的三组字符:大写字母、小写字母、以10为基数的数字和符号。
-p 1433:1433 将宿主机1443与容器1443端口进行映射
后面三个-v都是数据卷的映射
-d 后台运行
4、开放防火墙端口
firewall-cmd --zone=public --add-port=1433/tcp --permanent firewall-cmd --reload
5、进入容器
docker exec -it b998d4bee197 /bin/bash
后面跟的是容器ID
然后到/opt/mssql-tools/bin下,使用sqlcmd连接并创建一个表以及查询所有表
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P Badao123456
通过语句
3> CREATE DATABASE BADAO; 4> SELECT Name from sys.Databases; 5> go
效果:
输入:
quit
退出语句
输入exit
退出容器
6、连接SqlServer
下载SSMS
下载之后安装,安装之后连接
进入到上面映射的数据卷存放data数据的地方
可以看到数据库映射也成功了
7、踩坑1
容器启动后,过一会就没了。可以通过查看日志的方式排查
查看容器运行日志,后面跟的是容器ID
docker logs -f b998d4bee197
日志提示:
Setup FAILED copying system data file 'C: emplatedatamaster.mdf' to '/var/... 5(Access is denied)
原因是创建的数据卷映射的目录权限不够
赋予权限
sudo chmod 777 -R /mssqlvol
然后运行容器时使用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、官方教程
可以参照官方教程进行部署和配置