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
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]
## 构建容器
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
6、容器内操作
## 进入容器
docker exec -it sqlserver /bin/bash
## 在容器内使用 sqlcmd 进行本地连接。默认情况下,sqlcmd 不在路径之中,因此需要指定完整路径。
/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U SA -p
//输入密码登录。如果成功,应会显示 sqlcmd 命令提示符:1>。
## 获取现有的数据库名
SELECT Name FROM Master..SysDatabases ORDER BY Name
go
或
SELECT Name from sys.Databases
go
## 创建数据库
Create database test COLLATE Chinese_PRC_CI_AS
go
## 其他操作本文中不一一介绍,有兴趣的自行研究^_^
7、容器外连接
本文中使用Navicat工具测试连接。构建容器时映射的端口防火墙默认已放开。
需安装navicat自带sqlncli工具,就在navicat安装目录下,64位系统安装sqlncli_x64.msi,否则会报如下错误:
[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
## Navicat新建SQL Server连接。主机栏填写宿主机IP和端口,中间用英文的逗号”,”隔开,千万别用英文冒号。若宿主机映射的端口也是1433,则可省略不写。
## 点击“测试连接”,出现如下错误
## 上述错误原因是:没有指定SQL Server Native Client驱动。点击“高级”选项卡,在“Native Client 驱动程序”
## 再次点击“测试连接”,则返回“连接成功”
## 连接成功如下图所示,默认自带的数据库隐藏不显示。在Navicat工具上进行创建删除用户、数据库等其他操作,无需进入容器操作。
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/tech/26158.html