一、必要条件
服务器的运行内存必须大于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';"



















