SQLServer IN Windows Container初探

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
全局流量管理 GTM,标准版 1个月
简介: # SQLServer IN Windows Container初探 ## 背景 微软早在14年就宣布与Docker合作把容器技术搬到Windows上,终于在去年9月Windows Server 2016 中落地了这一承诺,推出了能与Docker相容的Container技术. 关于Windows Container具体也有2种类型[Windows Containers]

SQLServer IN Windows Container初探

背景

微软早在14年就宣布与Docker合作把容器技术搬到Windows上,终于在去年9月Windows Server 2016
中落地了这一承诺,推出了能与Docker相容的Container技术.

关于Windows Container具体也有2种类型Windows Containers

Windows Server Containers – provide application isolation through process and namespace isolation technology. A Windows Server container shares a kernel with the container host and all containers running on the host.

Hyper-V Containers – expand on the isolation provided by Windows Server Containers by running each container in a highly optimized virtual machine. In this configuration the kernel of the container host is not shared with the Hyper-V Containers.

简单理解Server Containers更像是Linux上的Docker容器-共享kernel,而Hyper-V Containers则是有自己独立的kernel,其它关于隔离性、安全性等区别也基于此扩展开。

后续的实验部分我们都是在阿里云ECS上使用Windows Server Containers做测试

--ECS OS Versin
Windows Server 2016 Datacenter <X64>

--SQLServer Versin    
Microsoft SQL Server vNext (CTP1.4) - 14.0.405.198 (X64) 

Docker

--可用的providers    
get-packageprovider
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

1.png

--安装Docker
Install-Package -Name docker -ProviderName DockerMsftProvider -Verbose

3.png


--重启生效
Restart-Computer -Force

--利用Windows 2016的OneGet(PackageManagement)找到最后我们需要的Docker
--前两个步骤可以看出OneGet实际更像是一个管理包管理的工具

--已安装的包
get-package

4.png

这里对比Linux Docker有不同,Linux Docker中base image可以自己做但Windows上目前只能从官方获取


--base image
microsoft/windowsservercore
microsoft/nanoserver

more microsoft image

SQLServer

microsoft/mssql-server-windows

--拉取镜像
docker pull microsoft/mssql-server-windows

6.png

这个过程需要一些时间主要是镜像源在国外,所以测试中我使用的是香港的ECS尽量快些

7.png

如果想自己构建安装参考 mssql-server-windows/dockerfile 从这里申请下载SQLServer安装 SQL Server vNext Community Technology Preview


#启动SQLServer
docker run -d -p 1433:1433 -e sa_password=*** -e ACCEPT_EULA=Y microsoft/mssql-server-windows

#容器网络配置
GET-VMSwitch

GET-NetNat

Get-ContainerNetwork

10.png

测试中使用的是NAT模式,其它网络模式参考 Windows Container Networking

15.png

容器内部访问


#Windows 账号认证登录
docker exec -it <DOCKER_CONTAINER_ID> sqlcmd

#SQL 账号认证登录
docker exec -it <DOCKER_CONTAINER_ID> sqlcmd -S. -Usa

8.png

容器外部-宿主机访问

宿主机通过 SQL Server Management Studio (SSMS)访问,这一客户端程序在2016后已经作为单独的组件提供,对应安装包已经不再集成 NEW SSMS



#获取到的信息包括刚才的密码,需要注意
docker inspect 86bb05abfd3d28187742ebb60b2a6fefb80596644b1469c94099ada408217602

#根据template只解析容器的私网ip
docker inspect -f '{{ .NetworkSettings.Networks.nat.IPAddress }}' 86bb05abfd3d28187742ebb60b2a6fefb80596644b1469c94099ada408217602

9.png

容器外部-跨机访问

#链接容器宿主机的外网IP

12.png

从SQLServer上也可以明显的看出几种访问方式不同

14.png

session51是容器内Windows认证访问,client address解析为local machine

session52、53是容器内SQL认证访问,client address解析为容器的私网IP

session54是 容器外部-跨机访问,client address解析为来源公网IP

session55是 容器外部-宿主机访问,client address解析为宿主机的虚网卡地址,对每个容器来说相当于一个vSwitch,容器的vNIC都会链接到这个Hyper-V Virtual Switch

注意:跨机访问时保证windows防火墙不要block链接,阿里云安全组规则也要设置正确,本例是对特定IP做了授权
13.png

问题

  • 对于Container隔离性的选择

    从安全上讲hyper-v container更合适公有云;Server Container 更适合私有云内部使用,适合可信多租户、应用间彼此相互信任、应用在容器中不违反隔离边界,这里可以分解为2点:

    • 应用安全性
    • 隔离有效性
  • 业内实际案例

    Azure自然提供了对应的公有云服务且是基于hyper-v container的,对于业务场景来说目前只看到携程有实际案例Windows Container在携程的应用

  • SQLServer在Container中的表现能否满足用户需求

    这个在后续会给出一些测试

  • Licence问题

    在Windows Container中提供SQLServer服务具体的Licence计费方式还不清晰

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
6月前
|
SQL 数据管理 关系型数据库
如何在 Windows 上安装 SQL Server,保姆级教程来了!
在Windows上安装SQL Server的详细步骤包括:从官方下载安装程序(如Developer版),选择自定义安装,指定安装位置(非C盘),接受许可条款,选中Microsoft更新,忽略警告,取消“适用于SQL Server的Azure”选项,仅勾选必要功能(不包括Analysis Services)并更改实例目录至非C盘,选择默认实例和Windows身份验证模式,添加当前用户,最后点击安装并等待完成。安装成功后关闭窗口。后续文章将介绍SSMS的安装。
|
SQL 安全 数据库
SQL Server 2005 Windows验证如何改为混合模式验证
SQL Server 2005 Windows验证如何改为混合模式验证
292 0
QGS
|
SQL 监控 数据库
(Centos7-x86)zabix5.0-0 —agent2监控 SQL server数据库(Windows)
记(Centos7-x86)zabix5.0-0 —agent2监控 SQL server数据库(Windows)
QGS
509 0
(Centos7-x86)zabix5.0-0 —agent2监控 SQL server数据库(Windows)
|
SQL Linux Go
从 Windows 中恢复 SQLServer On Linux|学习笔记
快速学习从 Windows 中恢复 SQLServer On Linux
178 0
从 Windows 中恢复 SQLServer On Linux|学习笔记
|
Windows 容器
成功解决Windows无法启动服务NVIDIA Dispaly Container LS服务(位于本地计算机上),错误2:系统找不到指定的文件
成功解决Windows无法启动服务NVIDIA Dispaly Container LS服务(位于本地计算机上),错误2:系统找不到指定的文件
成功解决Windows无法启动服务NVIDIA Dispaly Container LS服务(位于本地计算机上),错误2:系统找不到指定的文件
|
SQL 安全 Java
mybatis学习(10): sql server身份验证和windows身份验证
mybatis学习(10): sql server身份验证和windows身份验证
495 0
|
数据库 Windows
各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享
各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享
149 0
各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享
|
2月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
103 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
11天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
下一篇
无影云桌面