【转】使用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网卡的混杂模式: 功能、好处与实施(linux网卡混杂模式)
- 掌握Linux系统如何进入MySQL数据库(linux怎么进入mysql数据库)
- 管理Linux下数据库权限管理之道(linux数据库权限)
- Linux下操作MySQL数据库的技巧(linux操作mysql)
- Linux下DB2数据库的备份实践(db2备份linux)
- 指南:Linux下Oracle安装过程(linux上安装oracle)
- 恢复Linux数据库日志恢复:一种信息安全解决方案(linux数据库日志)
- Linux下快速搭建数据库(linux建库)
- 卸载Linux计算机上的MySQL数据库(linux卸载mysql数据库)
- Linux实现数据库查询的简单方法(linux查询数据库)
- Linux背光控制器驱动程序的安装(linux背光驱动)
- 如何自学Linux操作系统(怎么自学linux)
- 使用Linux终端Vi使用入门介绍(linux终端vi)
- Linux之旅:探索分支的世界(linux的分支)
- Linux多样化发展:探索不同分支的新可能(linux的分支)
- 熄灭Linux防火墙:快速且安全的方式(关闭linux的防火墙)
- 连接Linux数据库:数据库连接池技术实现(数据库连接池linux)
- Linux 测量网络流量的实用工具(linux测流量)
- Linux下调整时区的方法(linux 调整时区)
- 轻松学习Linux:使用光盘刻录安装盘。(linux 光盘 刻录)
- Linux重启数据库服务:一步搞定!(linux重启数据库服务)
- 解压Linux下的MySQL数据库安装包(linux解压mysql)