使用 Docker 執行 SQL Server Container
Microsoft 提供官方的 Official images for Microsoft SQL Server on Linux for Docker Engine,在 Windows 上即可簡單地執行 Linux 版 SQL Server Container。本文說明如何下載映像檔、啟動 Container,並以 SQL Server Management Studio(SSMS)與 sqlcmd 連線。操作流程參考 Quickstart: Run SQL Server container images with Docker。
下載 Images 與執行 SQL Server Container
環境需求請參考 Prerequisites。
執行下列指令,下載最新版的 SQL Server 2022 Linux Container 映像檔:
docker pull mcr.microsoft.com/mssql/server:2022-latest
執行 Container(請將 YourStrong!Passw0rd 替換為自己的密碼,後續範例皆使用同一組密碼):
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourStrong!Passw0rd" -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2022-latest
-e "ACCEPT_EULA=Y":表示同意 End-User Licensing Agreement,未設定此環境變數,Container 無法使用。-e "MSSQL_SA_PASSWORD=YourStrong!Passw0rd":設定 SA 帳號的登入密碼(舊版本使用的SA_PASSWORD已被棄用)。密碼須符合 SQL Server 預設的密碼強度(Password Policy):- 不能包含帳號的文字
- 至少 8 個字元
- 須包含以下四類字元中的至少三類
- 大寫英文字
- 小寫英文字
- 阿拉伯數字
- 非英文數字符號,如 #、@ 等
-p 1433:1433:SQL Server 預設使用 1433 port 連接,此參數將 Container 的 1433 port 對應到本機的 1433 port。-d:讓 Container 在背景執行。--name sql1:指定 Container 的名稱為 sql1。mcr.microsoft.com/mssql/server:2022-latest:映像檔名稱。
執行 docker ps 檢查 Container 是否啟動。啟動成功時畫面如下圖,Status 顯示 Up。若未成功,請參考 Troubleshooting section of the configuration guide。

使用 SQL Server Management Studio(SSMS) 連線到 SQL Server
由於已透過 -p 1433:1433 將 Container 的 port 對應到本機,不需另外查詢 Docker 的 IP,直接連線到本機的 1433 port 即可。
在 SSMS 的連線視窗中設定:
- Server name:
localhost,1433(port 前為逗號) - Authentication:SQL Server Authentication
- Login:
sa;Password:前面設定的密碼 - Container 使用自簽憑證,而新版 SSMS 預設要求加密連線,若出現憑證錯誤,請勾選 Trust server certificate

連線成功後如下圖,操作方式與一般 SQL Server 相同。

使用 Docker 互動模式進入 Container 的 bash
除了 SSMS,也可以使用 Docker 互動模式進入 Container 的 bash 執行指令。範例先以 SSMS 建立 Sample 資料庫與一些測試資料,如下圖。

執行下列指令進入互動模式:
docker exec -it sql1 "bash"
exec:執行指令-it:進入互動模式sql1:指定 Container
進入 Container 的 bash 後,畫面如下圖。

根據 Quickstart: Run SQL Server container images with Docker 的說明,sqlcmd 位於 Container 內的固定路徑:SQL Server 2022 映像檔為 /opt/mssql-tools18/bin/sqlcmd,2017 映像檔則為 /opt/mssql-tools/bin/sqlcmd。使用 sqlcmd 連線到 SQL Server 的指令如下:
/opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P 'YourStrong!Passw0rd' -C
新版 sqlcmd 預設要求加密連線,而 Container 使用自簽憑證,因此需加上 -C(信任伺服器憑證)。
連線成功後即可執行 SQL 指令,SELECT 範例如下圖。
