Docker 運行 SQL Server 容器映像


隨着.Net Core迭代,大家也都用上了Linux用上了Docker。跟.Net經常配套使用的SQL SERVER以前一直是windows only,但是從SQL Server 2017開始已經支持運行在Docker上,也就說現在SQL Serer已經可以運行在Linux/Docker下了。
下來將演示SQL Server 2019運行在Docker下

  • 先決條件 

  1. 任何受支持的 Linux 分發或用於 Mac/Windows 的 Docker 上的 Docker 引擎 1.8+。 

  2. 有關詳細信息,請參閱 Install Docker(安裝 Docker)。 Docker overlay2 存儲驅動程序。 這是大多數用戶的默認設置。 如果發現自己未使用此存儲提供程序並且需要進行更改,請參閱 docker 文檔中有關配置 overlay2 的說明和警告。

  3. 至少 2 GB 的磁盤空間。

  4. 至少 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

今天就分享至此,感謝你的閱讀。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM