在Docker中使用Microsoft SQL Server数据库
Posted songyan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Docker中使用Microsoft SQL Server数据库相关的知识,希望对你有一定的参考价值。
下图中对SQL Server容器创建及数据库创建等操作进行了记录,方便自己日后查看。(文中的 * 仅表示隐藏自己的个人信息,手动马赛克,哈哈~)
Docker下载可看上一篇博文mac系统,docker下载安装
(下图为拉取完毕之后,使用docker ps查看当前运行容器的情况为起始,即没有将第一步与第二步记录。有空补上)
1. 从 Microsoft 容器注册表拉取 SQL Server 2017 Linux 容器映像。
docker pull mcr.microsoft.com/mssql/server:2017-latest
2. 使用以下命令运行Docker容器映像
docker run -e ‘ACCEPT_EULA=Y‘ -e ‘SA_PASSWORD=<YourStrong!Passw0rd>‘ -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest
这里的 <YourStrong!Passw0rd> 即设置你的数据库密码(注意:这里的密码要符合密码规则)「默认情况下,密码必须至少为 8 个字符长,且包含三个以下四种字符集的字符:大写字母、 小写字母、 十进制数字和符号」。至少8个字符的密码数,其中包括大写/小写/数字/符号这四种中的三种。
这里的 sql1 即是你给这个容器映像取的名称
3. 查看容器
docker ps -a
若只看当前运行的容器则只需输入 docker ps 命令即可
4. 进入容器命令
docker exec -it sql1 "bash"
5. 在容器内使用使用 sqlcmd 进行本地连接(也可以使用vs Code进行连接数据库,具体可参考使用vscode创建运行sql脚本 和 使用vscode开发一个项目)
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘<YourNewStrong!Passw0rd>‘
6. 创建数据库
CREATE DATABASE TestDB go
7. 在数据库中插入数据
USE TestDB CREATE TABLE Table1 (id INT, name NVARCHAR(50), quantity INT); INSERT INTO Table1 VALUES (1, ‘banana‘, 150); INSERT INTO Table1 VALUES (2, ‘orange‘, 154); go
8. 查看数据库中表的数据命令
select * from table1 go
9. 退出容器
exit
将项目中所要用到的数据库拷贝进容器中,再执行sql文件创建数据库
10. 首先进入本地的sql文件目录下
cd /Users/y*zi/codeProjects/C***z/scripts/database
进入到该目录之后,使用 ls 查看该目录下所包含的文件
11. 拷贝该目录下的sql文件到指定容器中
docker cp /Users/y*zi/codeProjects/C***z/scripts/database/c****gs.sql wzsql:/home
12. 进入容器 docker exec -it wzsql "bash" , 使用命令执行拷贝到容器中的sql文件
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘Ti****30‘ -i /home/c****gs.sql
至此,项目中所需要的数据库就在docker中创建完成了。mac系统中使用了Azure Data Studio进行连接数据库,执行sql导入数据
参考
[在Docker中体验数据库之Microsoft SQL Server](https://www.cnblogs.com/du-blog/p/10561787.html)
[使用Docker运行SQL Server容器映像](https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-2017&pivots=cs1-bash)
以上是关于在Docker中使用Microsoft SQL Server数据库的主要内容,如果未能解决你的问题,请参考以下文章
通过 Docker 实现在 Linux 容器中运行 Microsoft SQL Server 数据库
如何使用分组和分页符来创建双面 s-s-rS 徽章报告? (Microsoft SQL Server 2012 报表生成器)
无法在 .NET 应用程序中访问 SQL Server docker