Linux下Docker部署SQL Server 2019

Linux下Docker部署SQL Server 2019

1、部署配置要求

◆ 任何受支持的 Linux 分发的 Docker 引擎 1.8+。

◆ Docker overlay2 存储驱动程序。

◆ 处理器2个核心,仅兼容x64。

◆ 至少 2 GB 的磁盘空间。

◆ XFS 或 EXT4 文件系统(其他文件系统均不受支持,如 BTRFS) 。

◆ 至少 2 GB 的 RAM(2017-CU2 之前为 3.25 GB)。 如果在Mac或Windows上运行Docker,请确保为 Docker VM 分配足够的内存。

2、部署环境说明

本文中使用本地VM虚机部署测试。

OS:CentOS Linux release 7.8.2003 (Core) 3.10.0-1160.24.1.el7.x86_64

IP:192.168.168.100

Docker Version:v20.10.7

虚机配置:2核CPU、4G内存、20G Disk

注:①系统为最小化安装,部署前已完成系统初始化、内核及安全优化;

②Docker已安装;

③Iptables防火墙已启用,Docker服务启动容器时映射的端口会自动添加至Iptables防火墙相关规则中,不需要手动更改Iptables规则。

3、拉取镜像

## 拉取 SQL Server 2019 Linux 容器映像

docker pull mcr.microsoft.com/mssql/server:2019-latest

## 使用 tag 打个标签,方便使用

docker tag mcr.microsoft.com/mssql/server:2019-latest mssqlserver:2019

## 删除之前的镜像

docker rmi -f mcr.microsoft.com/mssql/server:2019-latest

## 查看镜像

docker image list
Linux下Docker部署SQL Server 2019

4、构建容器

## 创建数据目录,用于挂载,实现数据持久化

mkdir -p /data/mssql

## 修改目录权限

chown -R 10001:0 /data/mssql

## 否则会报以下错误

/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]
Linux下Docker部署SQL Server 2019

## 构建容器

docker run -d --restart=always 
--hostname sqlserver --name=sqlserver 
-e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YouP@ssw0rd" 
-p 2433:1433 -v /etc/localtime:/etc/localtime 
-v /data/mssql:/var/opt/mssql mssqlserver:2019

## 部分参数说明:

--hostname sqlserver——设置容器主机名为sqlserver。如果不指定它,则默认为容器ID,该ID是随机生成的系统GUID。
--name=sqlserver——指定容器的名称为sqlserver,而不是使用随机生成的名称。如果运行多个容器,则无法重复使用相同的名称。
-e "ACCEPT_EULA=Y"——设置ACCEPT_EULA参数说明确认接受最终用户许可协议。否则无法使用。必需设置。
-e "SA_PASSWORD=YouP@ssw0rd"——设置SQL SERVER数据库SA账号的密码,密码至少包含8个字符且符合SQL Server密码要求的强密码。 必需设置。
-p 2433:1433——将宿主机的2433端口映射到容器中1433端口(TCP)。
-v /data/mssql:/var/opt/mssql——将宿主机目录/data/mssql映射到容器内的目录/var/opt/mssql , 方便备份数据。

5、查看容器

docker ps -a
Linux下Docker部署SQL Server 2019

6、容器内操作

## 进入容器

docker exec -it sqlserver /bin/bash

## 在容器内使用 sqlcmd 进行本地连接。默认情况下,sqlcmd 不在路径之中,因此需要指定完整路径。

/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U SA -p
//输入密码登录。如果成功,应会显示 sqlcmd 命令提示符:1>。
Linux下Docker部署SQL Server 2019

## 获取现有的数据库名

SELECT Name FROM Master..SysDatabases ORDER BY Name
go
或
SELECT Name from sys.Databases
go
Linux下Docker部署SQL Server 2019

## 创建数据库

Create database test COLLATE Chinese_PRC_CI_AS
go
Linux下Docker部署SQL Server 2019

## 其他操作本文中不一一介绍,有兴趣的自行研究^_^

7、容器外连接

本文中使用Navicat工具测试连接。构建容器时映射的端口防火墙默认已放开。

需安装navicat自带sqlncli工具,就在navicat安装目录下,64位系统安装sqlncli_x64.msi,否则会报如下错误:

[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

## Navicat新建SQL Server连接。主机栏填写宿主机IP和端口,中间用英文的逗号”,”隔开,千万别用英文冒号。若宿主机映射的端口也是1433,则可省略不写。

Linux下Docker部署SQL Server 2019

## 点击“测试连接”,出现如下错误

Linux下Docker部署SQL Server 2019

## 上述错误原因是:没有指定SQL Server Native Client驱动。点击“高级”选项卡,在“Native Client 驱动程序”

Linux下Docker部署SQL Server 2019

## 再次点击“测试连接”,则返回“连接成功”

Linux下Docker部署SQL Server 2019

## 连接成功如下图所示,默认自带的数据库隐藏不显示。在Navicat工具上进行创建删除用户、数据库等其他操作,无需进入容器操作。

Linux下Docker部署SQL Server 2019

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.net/tech/26158.html

发表评论

登录后才能评论