CentOS8使用Docker容器中SqlServer数据库外部连接

楔子
工作在win10环境下,使用Docker Windows桌面版容器化SqlServer数据库连接使用(主要是想用Docker),但是同时需要Linux系统测试,win10 下VMware 虚拟机安装CentOS 与Docker冲突(都是虚拟化技术,该冲突可以解决,但是切换麻烦略),想到Win10 Linux 子系统发现也是一样,关键Win10 Linux 子系统安装Docker无法运行,最后干脆在CentOS 虚拟机下安装Docker 然后容器化SqlServer 让外界访问使用
需要步骤(所需工具)
- VMware Workstation 15 Pro
 - CentOS 8
 - SQL Server Docker
 - DataGrip 方便数据库连接
 
安装 VMware Workstation 15 Pro(略)
虚拟机安装 CentOS 8 建议
- 内存大于2G (sqlserver 需要服务器的内存至少2G)
 - 网络先设置自动获取(GUI桌面最好,方便手动设置网络而不用进入vi修改网络配置)
 
Docker 安装步骤
- 下载docker-ce的repo
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo - 安装依赖
yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm - 安装docker-ce
yum install docker-ceclear - 启动docker
systemctl start docker - 查看Docker版本和服务
 
安装SqlServer Docker(在Docker服务启动之后 )
- SQlServer Docker 官方指导
 - 安装sqlserver
 
- 执行 
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=sa账户的强密码' -p 1433:1433 --name=mysqlserver2017 -d mcr.microsoft.com/mssql/server:2017-latest这里会直接pull sqlserver 2017 的镜像到Docker 并且运行一个name=mysqlserver2017的容器,映射端口为1433(也就是centOS 中可以通过localhost:1433访问该数据库或者Ip地址) - 如果没有成功或者容器运行几秒之后停止,原因可能是服务器内存不足2g或者sa密码太弱了 可以查看日志 
Docker logs mysqlserver2017, 
- CentOS 中与容器交互 
docker exec -it mysqlserver2017 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <your_password> - 到目前为止仅CentOs 可以访问SqlServer
 
Windows 访问CentOS 8 Ip+1433端口
- 开放端口 
firewall-cmd --zone=public --add-port=1433/tcp --permanent - 重启防火墙 
firewall-cmd --reload3.ip addr查看ip windows->cmd->telnet 192.168.2.2 1433成功访问那么既可访问数据库(如果不成功,关闭防火墙再试systemctl stop firewalld.service)- 使用DataGrip 连接并访问
 
End---
原文出处:https://www.cnblogs.com/Hvai/p/11819520.html
以上是 CentOS8使用Docker容器中SqlServer数据库外部连接 的全部内容, 来源链接: utcz.com/z/509519.html
