一、必要条件
服务器的运行内存必须大于2GB
二、拉取2017镜像
docker pull mcr.microsoft.com/mssql/server:2017-latest
三、启动镜像
docker run --name sqlserver2017 --restart always -v /home/ceshi1:/var/opt/mssql -d -e 'ACCEPT_EULA=Y' -e SA_PASSWORD='qwer!@#123' -p 1433:1433 mcr.microsoft.com/mssql/server:2017-latest
-e "ACCEPT_EULA=Y"
:提示您接受最终用户许可协议。如果您不同意,安装将不会继续-e "SA_PASSWORD=qwer!@#123"
:设置管理员SA的密码(必填参数,密码大于八位,并包含特殊符号)-p 1433:1433
:宿主机端口:容器端口--name sqlserver2017
:设置当前容器的名称。-d mcr.microsoft.com/mssql/server:2017-latest
:-d表示后台方式启动 后面的是 镜像的名称-v /home/mssql:/var/opt/mssql
:-v 挂载目录(映射目录), 宿主机目录:容器内目录--restart always
:设置容器根据docker一起启动
四、拉取2008镜像
docker pull exoplatform/sqlserver
五、启动2008镜像
docker run --name sqlserver2008 --restart always -v /home/ceshi2:/var/opt/mssql -d -e 'ACCEPT_EULA=Y' -e SA_PASSWORD='qwer!@#123' -e SQLSERVER_DATABASE=demo -e SQLSERVER_USER=jige -e SQLSERVER_PASSWORD='qwer!@#123' -p 1433:1433 exoplatform/sqlserver
-e SQLSERVER_DATABASE=demo
:创建一个叫 demo 的数据库-e SQLSERVER_USER=jige
:demo数据库添加了一个用户叫 jige-e SQLSERVER_PASSWORD='qwer!@#123'
:设置鸡哥用户的密码
六、进入docker容器操作数据库
6.1进入容器
docker exec -it sqlserver2017 /bin/bash
docker exec -it 容器id或者容器名称 /bin/bash
6.2进入数据库
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "qwer!@#123"
七、使用命令行还原数据库
使用 RESTORE FILELISTONLY 命令来列出备份文件中的逻辑文件名,然后使用正确的逻辑文件名来执行还原操作。
docker exec -it <容器名称或ID> /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<密码>' -Q "RESTORE FILELISTONLY FROM DISK='/opt/要还原的数据库名称'"
执行出来差不多是这样的。
然后拿到相关的名称执行 还原语句
docker exec -it <容器名称或ID> /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<密码>' -Q "RESTORE DATABASE 数据库名称 FROM DISK='你的数据库备份文件.bak的' WITH MOVE '你第1处的名称叫什么这里就写什么 比如 1.dat' TO '你的mdf文件放在你容器的什么位置 比如 /opt/text.mdf', MOVE '你第2处的名称叫什么这里就写什么 比如 2.log' TO '你的ldf文件放在你容器的什么位置 比如 /opt/text.ldf';"