Docker配置MSSQL

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash

硬件及环境要求

  • 要求至少2G 硬盘空间
  • 要求至少2G RAM,实际上阿里云2G服务器刚好不够用
  • 要求 Docker Engine 1.8+
  • 最少 8 个字符,包括大写和小写字母、十进制数字和/或非字母数字符号

创建文件夹用于挂载数据卷

因为我选择的挂载文件路径为/home/mssql,所以以下操作均以/home/mssql为例。

  1. cd /home
  2. mkdir mssql
  3. chmod -R 777 mssql

需要在创建文件夹之后对文件夹授权,否则mssql容器无法正常运行,查看日志可以发现是访问权限问题。

关于挂载权限设置,详细可参照官方文档:

https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-configure-docker?view=sql-server-ver15

下载运行mssql-server-linux镜像

  1. docker run \
  2. -e "ACCEPT_EULA=Y" \
  3. -e "SA_PASSWORD=123456" \
  4. -p 1433:1433 \
  5. -e 'TZ=Asia/Shanghai' \
  6. -v /home/mssql/data:/var/opt/mssql/data \
  7. -v /home/mssql/log:/var/opt/mssql/log \
  8. -v /home/mssql/secrets:/var/opt/mssql/secrets \
  9. --restart=always \
  10. --name mssql \
  11. -d mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04
  1. docker run --name=mssql \
  2. --hostname=b2efc60dc3b5 --user=root \
  3. --env=SA_PASSWORD=123456 --env=TZ=Asia/Shanghai \
  4. --env=ACCEPT_EULA=Y \
  5. --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
  6. --volume=/home/mssql/secrets:/var/opt/mssql/secrets \
  7. --volume=/mnt/mssql/backup:/var/opt/mssql/backup \
  8. --volume=/home/mssql/data:/var/opt/mssql/data \
  9. --volume=/home/mssql/log:/var/opt/mssql/log \
  10. -p 1433:1433 --restart=always \
  11. --label='vendor=Microsoft' --label='com.microsoft.product=Microsoft SQL Server' \
  12. --label='com.microsoft.version=15.0.2000.5' \
  13. --detach=true mcr.microsoft.com/mssql/server:2019-GA-ubuntu-16.04 \
  14. /opt/mssql/bin/sqlservr

其中-e 'TZ=Asia/Shanghai'是为了配置时区。

使用容器内的sqlcmd测试

  1. docker exec -it sqlserver /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 123456

本地安装sqlcmd测试

下载安装sqlcmd

  1. wget https://packages.microsoft.com/config/rhel/7/prod.repo
  1. mv prod.repo /etc/yum.repos.d/
  1. yum makecache
  1. yum install mssql-tools

测试连接

  1. sqlcmd -S localhost -U SA -P 123456

修改数据库占用

在没有修改SqlServer最大服务器内存的情况下,SqlServer会尽可能多的占用系统内存。在内存较小的服务器上运行SqlServer,可能出现服务器内存居高不下的情况,所以建议一开始先配置SqlServer的最大服务器内存。 配置操作如下图

5、配置MSSQL - 图1

5、配置MSSQL - 图2