由于国内下载微软官方的镜像非常慢,所以需要修改成国内的镜像地址
1. 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ya4ouoma.mirror.aliyuncs.com"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
2. 从 Docker Hub 中拉出 SQL Server 2017 Linux 容器映像
$ docker pull microsoft/mssql-server-linux:2017-latest
3. 使用 Docker 运行容器映像
$ sudo docker run --restart=always -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 --name <镜像名:sql2017> -v /etc/localtime:/etc/localtime -d microsoft/mssql-server-linux:2017-latest
--其中ACCEPT_EULA=Y的意思是同意许可协议,必选;MSSQL_SA_PASSWORD为密码,要求是最少8位的强密码,不然会几秒后停止sqlserver容器
4. 修改SA密码
$ sudo docker exec -it <镜像名:sql2017> /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourStrong!Passw0rd>' -Q 'ALTER LOGIN SA WITH PASSWORD="新密码"'
5. 连接到SQLSERVER
$ sudo docker exec -it <镜像名:sql2017> bash
--容器内部,使用 sqlcmd 进行本地连接。 默认情况下,sqlcmd 不在路径之中,因此需要指定完整路径。
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '密码'
--测试SQL语句
$ SELECT Name from sys.Databases
$ Go
--退出 sqlcmd 命令提示符
$ quit
--从容器外连接
$ sqlcmd -S 10.3.2.1,1433 -U SA -P '<YourNewStrong!Passw0rd>'
--exit退出容器
$ exit
6. 附加分离的数据库
$ exec sp_attach_db @dbname = 'tb_test' , @filename1 = '/opt/tb_test.mdf', @filename2 = '/opt/tb_test_log.ldf'
7. 删除容器
$ sudo docker stop <镜像名:sql2017>
$ sudo docker rm <镜像名:sql2017>