在Docker上安裝MSSQL(SQL Server)

在轉移到Mac OS X 陣營以後,若是想在本機上安裝微軟的mssql-server數據庫有三種方式:linux

  • 第一種是在本機上安裝MSSQL for Linux 版本。
  • 第二種是安裝Windows虛擬機,而後在虛擬機裏面使用ISO文件進行安裝。
  • 第三種也就是我要講的方式,就是使用Docker進行安裝。

第一種方式和第二種方式缺點就是要本身找安裝包,第三種方式直接經過Docker的命令docker search mssql就能搜索出來,而後拉取建立容器便可。sql

微軟也提供了相應的幫助文檔
圖片描述docker

鏡像是微軟官方的,但docker hub 奇怪的是並無把其標示爲OFFICIAL。數據庫

1.下載鏡像

docker pull microsoft/mssql-server-linux

使用該命令就能夠把數據庫的docker鏡像下載下來。bash

2.建立並運行容器

docker run --name MSSQL_1433 -m 512m -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 -d microsoft/mssql-server-linux

這個密碼須要複雜密碼,要有大小寫和特殊符號,替換yourStrong(!)Password成你本身的密碼就行。若是隻Linux服務器,能夠不用端口映射,直接使用宿主模式服務器

docker run --name MSSQL_1433 -m 512m -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' --net=host -d microsoft/mssql-server-linux

3.登入容器

docker exec -it MSSQL_1433 /bin/bash

4.鏈接到sqlcmd

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'yourStrong(!)Password'

5.執行SQL語句建立數據庫

CREATE DATABASE testDB
go

若是隻想建立數據庫,已經能夠完成了,用Navicat Premium就能夠鏈接到數據庫了。ui

6.還原數據庫

在容器內先建立一個文件夾spa

mkdir /var/opt/mssql/backup

在宿主把.bak備份文件複製到容器rest

sudo docker cp /Users/front/Downloads/beifen.bak MSSQL_1433:/var/opt/mssql/backup

運行sqlcmd到邏輯文件名稱和備分內的路徑的列表容器內code

sudo docker exec -it MSSQL_1433 /opt/mssql-tools/bin/sqlcmd -S localhost  -U SA -P 'yourStrong(!)Password'  -Q 'RESTORE FILELISTONLY FROM DISK =  "/var/opt/mssql/backup/beifen.bak"'  | tr -s ' ' | cut -d ' ' -f 1-2

運行結果

LogicalName PhysicalName
----------------------------------
beifen D:\Program
beifen_log D:\Program

還原數據庫

sudo docker exec -it MSSQL_1433 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'yourStrong(!)Password' -Q 'RESTORE DATABASE 數據庫名 FROM DISK = "/var/opt/mssql/backup/beifen.bak" WITH MOVE "beifen" TO "/var/opt/mssql/data/beifen.mdf", MOVE "beifen_Log" TO "/var/opt/mssql/data/beifen.ldf"'

Done

本文參考微軟幫助文檔
使用 Docker 運行 SQL Server 2017 容器映像Run the SQL Server 2017 container image with Docker
還原 Linux Docker 容器中的 SQL Server 數據庫Restore a SQL Server database in a Linux Docker container

相關文章
相關標籤/搜索