由于国内下载微软官方的镜像非常慢,所以需要修改成国内的镜像地址

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>