【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
2021/6/5 19:24:31
本文主要是介绍【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用Linux下Docker部署MSSQL并加载主机目录下的数据库
0.部署条件
部署MSSQL for Linux需要4G内存
我是在虚拟机中测试的,关闭防火墙,使虚拟机能上网
1.下载镜像
务必配置阿里镜像加速
mkdir /opt/mssqldata
docker pull microsoft/mssql-server-linux
2.创建并运行容器
缺省情况下,Docker中的SQL Server是开发者版本(Developer Edition),功能与企业版相同,但是仅能用于开发或者测试环境,不得用于生产环境
如果是开发环境,命令如下
docker run \
--name mssql \
--restart always \
--privileged=true \
-e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=yourStrong(!)Pass456' \
-v /opt/mssqldata/:/var/opt/mssql/data/mydata/ \
-p 1433:1433 \
-d microsoft/mssql-server-linux
1
2
3
4
5
6
7
8
9
密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,将停止工作。 默认情况下, 密码的长度必须至少为8个字符, 并且包含以下四个集中的三个字符:大写字母、小写字母、十进制数字和符号。 可以通过执行 docker logs 命令检查错误日志。替换yourStrong(!)Pass456成你自己的密码就行。
如果是Linux服务器,可以不用端口映射,直接使用宿主模式,如下:
docker run \
--name mssql \
--restart always \
--privileged=true \
--net=host
-e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=yourStrong(!)Pass456' \
-v /opt/mssqldata/:/var/opt/mssql/data/mydata/ \
-d microsoft/mssql-server-linux
1
2
3
4
5
6
7
8
9
如果是运行生产容器映像,命令如下:
docker run \
--name sqlent \
--restart always \
--privileged=true \
-e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=yourStrong(!)Pass456' \
-e 'MSSQL_PID=Enterprise' \
-v /opt/mssqldata/:/var/opt/mssql/data/mydata/ \
-p 1433:1433 \
-d microsoft/mssql-server-linux
1
2
3
4
5
6
7
8
9
10
注意,多了**-e ‘MSSQL_PID=Enterprise’ **这行
3.进入容器
docker exec -it mssql /bin/bash
4.使用mssql命令行工具
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ‘yourStrong(!)Pass456’
5.用图形化工具SQL Server Management Studio创建一个数据库testdb
选择数据库文件存放在/var/opt/mssql/data/mydata下
然后执行SQL语句
select @@VERSION;
go
SELECT Name from sys.Databases;
go
use testdb;
go
CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT);
go
INSERT INTO Inventory VALUES (1, ‘banana’, 150);
INSERT INTO Inventory VALUES (2, ‘orange’, 154);
SELECT * FROM Inventory WHERE quantity > 152;
go
6.停止容器并删除
sudo docker stop mssql
sudo docker rm mssql
7.再次运行docker
执行如上第2、3步,运行并进入docker
然后在命令行状态下,手动mount数据库
>EXEC sp_attach_db @dbname = 'testdb',
>@filename1 = '/var/opt/mssql/data/mydata/testdb.mdf',
>@filename2 = '/var/opt/mssql/data/mydata/testdb_log.ldf'
>GO
1
2
3
4
然后再执行第5步测试数据都正常还在。
注:如果docker没有rm,就是没有删除,则都会正常加载的,就不再需要attach数据库文件了。也就是启停不会影响数据库的。
8.参考文档
•Run the SQL Server 2017 container image with Docker
•Docker Repository: microsoft/mssql-server-linux
————————————————
https://blog.csdn.net/tikiyou/article/details/113117507
这篇关于【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-08Docker下的SqlServer发布订阅启用
- 2023-06-05Docker安装MS SQL Server并使用Navicat远程连接
- 2023-05-25深入浅出 SQL Server CDC 数据同步
- 2023-05-12通过空间占用和执行计划了解SQL Server的行存储索引
- 2023-04-24以SQLserver为例的Dapper详细讲解
- 2022-11-30SQL server高级函数查询
- 2022-11-26SQL SERVER数据库服务器CPU不能全部利用原因分析
- 2022-11-21SQL Server 时间算差值/常用函数
- 2022-11-20调试Archery连接SQL Server提示驱动错误
- 2022-10-22SQL Server 完整、差异备份+完整、差异还原(详细讲解,规避错误)