标签:opt docker -- MSSQL mydata 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
标签:opt,docker,--,MSSQL,mydata,Linux,Docker,mssql 来源: https://www.cnblogs.com/Areas/p/14852676.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。