隨着.Net Core迭代,大家也都用上了Linux用上了Docker。跟.Net經常配套使用的SQL SERVER以前一直是windows only,但是從SQL Server 2017開始已經支持運行在Docker上,也就說現在SQL Serer已經可以運行在Linux/Docker下了。
下來將演示SQL Server 2019運行在Docker下
-
先決條件
-
任何受支持的 Linux 分發或用於 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。
-
有關詳細信息,請參閱 Install Docker(安裝 Docker)。 Docker overlay2 存儲驅動程序。 這是大多數用戶的默認設置。 如果發現自己未使用此存儲提供程序並且需要進行更改,請參閱 docker 文檔中有關配置 overlay2 的說明和警告。
-
至少 2 GB 的磁盤空間。
-
至少 2 GB 的 RAM。 Linux 上的 SQL Server 的系統要求。
-
拉取並運行 2019 容器映像
Linux Docker 從 Microsoft 容器注冊表中拉取 SQL Server 2019容器映像
sudo docker pull mcr.microsoft.com/mssql/server:2019-latest
Windows Docker Desktop下從 Microsoft 容器注冊表中拉取 SQL Server 2019容器映像,以管理員身份運行CMD或PowerShell執行一下命令
docker pull mcr.microsoft.com/mssql/server:2019-latest
待結束后,執行以下命令即可看到我們拉取成功的鏡像
docker images
要使用 Docker 運行容器映像,可以從 Bash Shell (Linux/macOS) 或提升的 PowerShell 命令提示符使用以下命令,Linux下使用sudo提升運行權限
docker run -v /d/MSSQL:/var/opt/mssql --name sqlserver -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=2019@123' -p 17951:1433 -d mcr.microsoft.com/mssql/server:2019-latest
如下圖已運行成功
參數說明:
參數 | 說明 |
---|---|
-e 'ACCEPT_EULA=Y' | 設置此參數說明同意 SQL SERVER 使用條款 , 否則無法使用 |
-e 'SA_PASSWORD=密碼' | 此處設置 SQL SERVER 數據庫 SA 賬號的密碼 |
-p 17951:1433 | 將宿主機 17951端口映射到容器的 1433 端口 |
--name sqlserver | 設置容器名為 mssql |
-v /d/MSSQL:/var/opt/mssql | 將windnows宿主機目錄D:\MSSQL 映射到容器 /var/opt/mssql , 方便備份數據 |
-d | 在后台運行 |
查看 Docker 容器
docker ps -a
應會看到與以下屏幕截圖類似的輸出
連接到 SQL Server
使用客戶端工具Microsoft SQL Server Management 連接
連接成功
我們在客戶端Microsoft SQL Server Management 創建測試數據Test,可以在我們本地映射的目錄D:\MSSQL\data看到
如需還原數據庫我們可將xxx.bak,文件拷貝至D:\MSSQL\data在客戶端工具中還原即可,如下圖
使用命令在容器內部交互
使用 docker exec -it
命令在運行的容器內部交互,下來我們將結束通過命令在容器內部交互還原數據 /查詢/備份等。
docker exec -it sqlserver bash
使用命令在內部連接,在容器內部使用 sqlcmd 進行本地連接。 默認情況下,sqlcmd 不在路徑之中,因此需要指定完整路徑。
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P [數據庫密碼]
如果成功,應會顯示 sqlcmd 命令提示符:1>
在 sqlcmd 命令提示符中,粘貼以下 Transact-SQL 命令以創建測試數據庫:
CREATE DATABASE MyDB
在下一行中,編寫一個查詢以返回服務器上所有數據庫的名稱
SELECT Name from sys.Databases
前兩個命令並沒有立即執行。 在新行中鍵入 GO
以執行以前的命令:
GO
插入數據
接下來創建一個新表 MyTable,然后插入兩個新行。
在 sqlcmd 命令提示符中,將上下文切換到新的MyDB 數據庫:
USE MyDB
創建名為 MyTable的新表:
CREATE TABLE MyTable (id INT, name NVARCHAR(50), quantity INT)
並為MyTable表插入數據
INSERT INTO MyTable VALUES (1, 'banana', 150); INSERT INTO MyTable VALUES (2, 'orange', 154);
要執行上述命令的類型 GO
:
GO
在Microsoft SQL Server Management中查看數據
在容器內部查詢數據
SELECT * FROM MyTable WHERE id =1;
執行以上命令
GO
要結束 sqlcmd 會話,請鍵入 QUIT
:
今天就分享至此,感謝你的閱讀。