• Docker 运行 SQL Server 容器映像


    随着.Net Core迭代,大家也都用上了Linux用上了Docker。跟.Net经常配套使用的SQL SERVER以前一直是windows only,但是从SQL Server 2017开始已经支持运行在Docker上,也就说现在SQL Serer已经可以运行在Linux/Docker下了。
    下来将演示SQL Server 2019运行在Docker下

    • 先决条件 

    1. 任何受支持的 Linux 分发或用于 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。 

    2. 有关详细信息,请参阅 Install Docker(安装 Docker)。 Docker overlay2 存储驱动程序。 这是大多数用户的默认设置。 如果发现自己未使用此存储提供程序并且需要进行更改,请参阅 docker 文档中有关配置 overlay2 的说明和警告。

    3. 至少 2 GB 的磁盘空间。

    4. 至少 2 GB 的 RAM。 Linux 上的 SQL Server 的系统要求。

    • 拉取并运行 2019 容器映像

     

    Linux Docker 从 Microsoft 容器注册表中拉取 SQL Server 2019容器映像

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

     Windows Docker Desktop下从 Microsoft 容器注册表中拉取 SQL Server 2019容器映像,以管理员身份运行CMD或PowerShell执行一下命令

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

    待结束后,执行以下命令即可看到我们拉取成功的镜像

    docker images   

    要使用 Docker 运行容器映像,可以从 Bash Shell (Linux/macOS) 或提升的 PowerShell 命令提示符使用以下命令,Linux下使用sudo提升运行权限

    docker run -v /d/MSSQL:/var/opt/mssql --name sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=2019@123' -p 17951:1433 -d mcr.microsoft.com/mssql/server:2019-latest

    如下图已运行成功

     参数说明:

    参数说明
    -e 'ACCEPT_EULA=Y' 设置此参数说明同意 SQL SERVER 使用条款 , 否则无法使用
    -e 'SA_PASSWORD=密码' 此处设置 SQL SERVER 数据库 SA 账号的密码
    -p 17951:1433 将宿主机 17951端口映射到容器的 1433 端口
    --name sqlserver 设置容器名为 mssql
    -v /d/MSSQL:/var/opt/mssql 将windnows宿主机目录D:MSSQL 映射到容器 /var/opt/mssql , 方便备份数据
    -d 在后台运行

    查看 Docker 容器

    docker ps -a

    应会看到与以下屏幕截图类似的输出

    连接到 SQL Server

    使用客户端工具Microsoft SQL Server Management 连接

     连接成功

    我们在客户端Microsoft SQL Server Management 创建测试数据Test,可以在我们本地映射的目录D:MSSQLdata看到

     

     如需还原数据库我们可将xxx.bak,文件拷贝至D:MSSQLdata在客户端工具中还原即可,如下图

    使用命令在容器内部交互

    使用 docker exec -it 命令在运行的容器内部交互,下来我们将结束通过命令在容器内部交互还原数据 /查询/备份等。

    docker exec -it sqlserver bash

     使用命令在内部连接,在容器内部使用 sqlcmd 进行本地连接。 默认情况下,sqlcmd 不在路径之中,因此需要指定完整路径。

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P [数据库密码]

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

    在 sqlcmd 命令提示符中,粘贴以下 Transact-SQL 命令以创建测试数据库:

    CREATE DATABASE MyDB

    在下一行中,编写一个查询以返回服务器上所有数据库的名称

    SELECT Name from sys.Databases

    前两个命令并没有立即执行。 在新行中键入 GO 以执行以前的命令

    GO      

    插入数据

    接下来创建一个新表 MyTable,然后插入两个新行。

    在 sqlcmd 命令提示符中,将上下文切换到新的MyDB 数据库:

    USE MyDB

    创建名为 MyTable的新表:

    CREATE TABLE MyTable (id INT, name NVARCHAR(50), quantity INT)

    并为MyTable表插入数据

    INSERT INTO MyTable VALUES (1, 'banana', 150); INSERT INTO MyTable VALUES (2, 'orange', 154);

    要执行上述命令的类型 GO

    GO 

    在Microsoft SQL Server Management中查看数据

     在容器内部查询数据

    SELECT * FROM MyTable WHERE id =1;

    执行以上命令

    GO 

     要结束 sqlcmd 会话,请键入 QUIT

    今天就分享至此,感谢你的阅读。

  • 相关阅读:
    git httphttpsgit免密设置记住用户名和密码的方法
    WPF部署问题 解决:The application requires that the assembly...be installed in the GAC
    reporting service & wpf
    洪应明《菜根谭》
    焦郁《白云向空尽》
    .net 裁剪图片
    js 本地预览图片和得到图片实际大小
    display: -webkit-box; 做个小小试验
    C# json
    宽域POST提交数据
  • 原文地址:https://www.cnblogs.com/yangzhili/p/13697616.html
Copyright © 2020-2023  润新知