在Linux系统上面通过Docker安装SQL Server数据库

  • 一、前言

    现在.NET Core已经跨平台了,支持Windows、Linux、Mac系统,而我们也已经在Linux上面使用了Docker。使用.NET开发的人使用最多的就是SQL Server数据,以前是只能在Windows系统上使用,但是从SQL Server 2017开始支持运行在docker上了,也就是说现在SQL Server可以在Linux上运行了。

    本篇文章将会介绍如何使用docker安装SQL Server。这里使用的是Contos7,其他版本的Linux操作系统也一样。使用的数据库是SQL Server 2017。

    二、安装SQL Server

    1、拉取SQL Server镜像

    要在Docker中安装SQL Server,首先要有SQL Server的镜像,所以第一步是拉取SQL Server镜像

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

    如图所示

    2、创建目录

    我们知道,Docker容器一旦删除了,那么容器里面的数据也会丢失,所以我们在宿主机上面创建一个目录,用来挂载容器内的目录。

    mkdir /etc/sqlserver_data

    如图所示

    3、运行容器

    有了镜像之后,我们就可以根据镜像去运行容器了。

    sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P@ssw0rd," -p 1433:1433 --name sqlserver2017 -v /etc/sqlserver_data:/var/opt/mssql  -d mcr.microsoft.com/mssql/server:2017-latest

    我们对上面的命令做如下的解释

    1. -e "SA_PASSWORD=P@ssw0rd,":这里是给SA用户设置登录密码,这里设置的密码是P@ssw0rd,。
    2. -v /etc/sqlserver_data:/var/opt/mssql:表示/etc/sqlserver_data目录挂载到容器的/var/opt/mssql目录,这个目录是用来存储数据库文件的,所以最好挂载到容器外部,避免因为不小心删除容器而丢失数据。
    3. -p 1433:1433:表示宿主机的1433端口映射到容器的1433。

    如图所示

    4、使用命令进入SQL Server

    容器运行以后,我们使用exec命令进入SQL Server内部

    docker exec -it sqlserver2017 /bin/bash

    如图所示

    这样我们就进入了容器内部,然后执行下面的命令:

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"

     在示例中的命令如下:

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P P@ssw0rd,

    如果成功,应会显示 sqlcmd 命令提示符:1>

    如图所示

     执行下面的命令,查询数据

    select name from sys.Databases

    如图所示

    可以查询出结果。

    我们通过命令的方式创建数据库,然后创建表,并插入一些数据。

    5、使用SSMS登录SQL Server数据库

    上面我们是直接使用命令的方式操作数据库,我们还可以使用Microsoft SQL Server Management Studio(SSMS)进行登录Docker里面的数据库,然后通过图形化界面的方式操作数据库

    使用SSMS连接Linux上的SQL Server参考微软官方文档:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-manage-ssms?view=sql-server-2017

    登录成功以后我们查询数据,如图所示

    我们往student表里面插入一条数据

    我们在Docker里面查看,看看数据有没有变化

    我们看到docker里面的数据也发生了变化。 使用SSMS操作数据库就跟在docker里面使用命令直接操作数据库一样。

    三、还原数据库

    将要还原的数据库文件存放到Centos系统中。

    选择要还原的数据库文件。

     

     

     

    若报3154错误,

     

     

    可以使用SQL 语句还原:

    use master;
    RESTORE DATABASE ReportServerTempDB FROM DISK='F:\DB\Backup\ReportServerTempDB.bak' with replace,
    MOVE'ReportServerTempDB'TO'D:\SQL2012\MSSQL11.MSSQLSERVER\MSSQL\DATA\ReportServerTempDB.mdf',
    MOVE'ReportServerTempDB_log'TO'D:\SQL2012\MSSQL11.MSSQLSERVER\MSSQL\DATA\ReportServerTempDB_log.ldf'

     

    四、总结

    上面简单介绍了一下如何在Linux系统上通过Docker安装SQL Server数据库,安装好了以后,我们就可以使用SSMS操作Docker里面的数据库了,就跟在Windows上面安装的SQL Server操作一样了。更多内容可以参考微软官网文档:

    https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-2017&pivots=cs1-bash#connectexternal 

  •  
posted @ 2022-07-17 11:16  春光牛牛  阅读(605)  评论(0编辑  收藏  举报