• CentOS中使用Docker安装SqlServer以及遇到的那些坑


    场景

    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

    https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

    下载之后安装,安装之后连接

    进入到上面映射的数据卷存放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、官方教程

    可以参照官方教程进行部署和配置

    https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-docker-container-configure?view=sql-server-ver15&pivots=cs1-bash

    博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
  • 相关阅读:
    CentOS7.5 防火墙指令
    监控Tomcat
    MySQL.ERROR 1133 (42000): Can't find any matching row in the user table
    Hadoop.之.入门部署
    Jenkins. 安装过程中出现一个错误: No such plugin: cloudbees-folder
    Spring.之.报错:Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
    Spring.之.jar包官网下载
    Linux 安装Eclipse
    Linux SSH 免秘钥登录
    Linux rz命令无效
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/15174962.html
Copyright © 2020-2023  润新知