架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 243|回复: 4

[资料] 【实战】在 Docker 上面部署 SQL Server 2019 数据库

[复制链接]
发表于 2021-12-1 21:13:44 | 显示全部楼层
随着容器化越来越流行,微软的 sql server 也支持在 docker 上面运行部署了,本文在已安装 Docker 容器的 CentOS 8 系统安装 SQL Server 2019 数据库。

安装条件

任何受支持的 Linux 分发或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。
Docker overlay2 存储驱动程序。 这是大多数用户的默认设置。
至少 2 GB 的磁盘空间。
至少 2 GB 的 RAM。

拉取镜像

docker 仓库地址:https://hub.docker.com/_/microsoft-mssql-server,镜像是存储在微软私有仓库,但是该页面会公布版本的更新等信息。

命令如下:

镜像版本说明:

GA = General Availability - 当版本正式可用并受支持时。
CU = 累积更新 - 定期发布,包括错误修复、安全修复和偶尔的小功能。
CTP = Community Technology Preview - 在即将发布的新版本 GA 之前的预览版本。
GDR = General Distribution Release - 仅包含安全修复程序的版本。

环境变量

环境变量
说明
ACCEPT_EULA
将 ACCEPT_EULA 变量设置为任意值,以确认接受最终用户许可协议。 SQL Server 映像的必需设置。
MSSQL_SA_PASSWORD
配置 SA 用户密码。
MSSQL_PID
设置 SQL Server 版本或产品密钥。 可能的值包括:
计算
开发人员
Express
Web
标准
企业
产品密钥

如果指定产品密钥,则必须采用 #####-#####-#####-#####-##### 格式,其中“#”是数字或字母。
MSSQL_LCID
设置用于 SQL Server 的语言 ID。 例如,1036 为法语。
MSSQL_COLLATION
设置 SQL Server 的默认排序规则。 这将替代语言 ID (LCID) 到排序规则的默认映射。
MSSQL_MEMORY_LIMIT_MB
设置 SQL Server 可以使用的最大内存量(以 MB 为单位)。 默认情况下,它为物理内存总量的 80%。
MSSQL_TCP_PORT
配置 SQL Server 侦听的 TCP 端口(默认为 1433)。
MSSQL_IP_ADDRESS
设置 IP 地址。 目前,IP 地址必须为 IPv4 样式 (0.0.0.0)。
MSSQL_BACKUP_DIR
设置默认备份目录位置。
MSSQL_DATA_DIR
更改新的 SQL Server 数据库数据文件 (.mdf) 的创建目录。
MSSQL_LOG_DIR
更改新的 SQL Server 数据库日志文件 (.ldf) 的创建目录。
MSSQL_DUMP_DIR
更改 SQL Server 存放内存转储和其他故障排除文件的默认目录。
MSSQL_ENABLE_HADR
启用可用性组。 例如,“1”为已启用,“0”为已禁用
MSSQL_AGENT_ENABLED
启用 SQL Server 代理。 例如,“true”为已启用,“false”为已禁用。 默认情况下,代理处于禁用状态。
MSSQL_MASTER_DATA_FILE
设置主数据库数据文件的位置。 在首次运行 SQL Server 之前,必须将其命名为 master.mdf。
MSSQL_MASTER_LOG_FILE
设置主数据库日志文件的位置。 在首次运行 SQL Server 之前,必须将其命名为 mastlog.ldf。
MSSQL_ERROR_LOG_FILE
设置错误日志文件的位置。

启动一个 SQL Server 2019 应用

首先,为了防止容器数据丢失,我们需要将容器内的数据库文件目录映射到宿主机的某个目录下面。命令如下:

备注:一定要设置目录所属用户和组,否会会报错如下:

SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
/opt/mssql/bin/sqlservr: Error: The system directory [/.system] could not be created. File: LinuxDirectory.cpp:420 [Status: 0xC0000022 Access Denied errno = 0xD(13) Permission denied]

根据环境变量配置一些启动参数,启动一个应用,命令如下:

SQL Server 2019 密钥(仅限学习测试使用,请勿用于正式生产环境

Enterprise:HMWJ3-KY3J2-NMVD7-KG4JR-X2G8G
Strandard:PMBDC-FXVM3-T777P-N4FY8-PKFF4

密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,将停止工作。 默认情况下,密码的长度必须至少为 8 个字符,并且必须包含以下四种字符中的三种:大写字母、小写字母、十进制数字和符号。

宿主机可以挂载上找到容器的 /var/opt/mssql 目录,不支持其他文件,例如 SQL Server 系统二进制文件。

容器启动后,查看日志,如下图:

QQ截图20211201210525.jpg

进入到容器内部,如下图:

QQ截图20211201210712.jpg

连接 SQL Server 2019 数据库

下载 SQL Server Management Studio (SSMS):https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms

打开 SSMS 工具,输入地址、账号、密码,测试新建一个数据库,如下图:


QQ截图20211201211227.jpg

参考资料:

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup
https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker
https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-configure-environment-variables





上一篇:【实战】Spring Boot 基于 AD 域(LDAP)身份验证
下一篇:Java InputStream 复制克隆,解决多次读取问题
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-12-4 17:03:57 | 显示全部楼层
又来学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2021-12-12 00:40:23 | 显示全部楼层
飞速IP开放端口扫描器v2.0[源码
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2021-12-28 21:22:46 | 显示全部楼层
docker mssql 设置时区

进入到容器,输入 tzselect 命令,如下图:

QQ截图20211228212123.jpg

或者在启动容器的时候添加环境变量设置时区,以中国上海为例:


参考:https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-docker-container-configure
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2021-12-28 21:45:06 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2022-1-29 07:07

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表