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 安装步骤

  1. 下载docker-ce的repo
    curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
  2. 安装依赖
    yum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm
  3. 安装docker-ce
    yum install docker-ceclear
  4. 启动docker
    systemctl start docker
  5. 查看Docker版本和服务
    CentOS8 使用Docker容器中 SqlServer数据库 外部连接_第1张图片

安装SqlServer Docker(在Docker服务启动之后 )

  1. SQlServer Docker 官方指导
  2. 安装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地址)
    CentOS8 使用Docker容器中 SqlServer数据库 外部连接_第2张图片
  • 如果没有成功或者容器运行几秒之后停止,原因可能是服务器内存不足2g或者sa密码太弱了 可以查看日志 Docker logs mysqlserver2017
    CentOS8 使用Docker容器中 SqlServer数据库 外部连接_第3张图片
  1. CentOS 中与容器交互 docker exec -it mysqlserver2017 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P
    CentOS8 使用Docker容器中 SqlServer数据库 外部连接_第4张图片
  2. 到目前为止仅CentOs 可以访问SqlServer

Windows 访问CentOS 8 Ip+1433端口

  1. 开放端口 firewall-cmd --zone=public --add-port=1433/tcp --permanent
  2. 重启防火墙 firewall-cmd --reload
    3.ip addr 查看ip
    CentOS8 使用Docker容器中 SqlServer数据库 外部连接_第5张图片
  3. windows->cmd->telnet 192.168.2.2 1433 成功访问那么既可访问数据库(如果不成功,关闭防火墙再试systemctl stop firewalld.service)
  4. 使用DataGrip 连接并访问
    CentOS8 使用Docker容器中 SqlServer数据库 外部连接_第6张图片

    End---

你可能感兴趣的:(CentOS8 使用Docker容器中 SqlServer数据库 外部连接)