505 字
3 分鐘
Docker 建立 MSSQL 用於測試
Docker 建立 MSSQL 用於測試
在一些開發環境中,或許會使用到 SQL Server 的相關服務開發; 而自己對 SQL Server 沒有到非常熟悉,因此想說透過 Docker 建立一個 SQL Server 來進行測試/開發。
相關連結:
拉取 Docker Registry 上的 SQL Server Image
針對其他版本的話,請參考 快速入門:使用 Docker 執行 SQL Server Linux 容器映像 中的說明
此範例使用 SQL Server 2022 (當前官方網站上的最新版本)
docker pull mcr.microsoft.com/mssql/server:2022-latest啟動服務
export MSSQL_SA_PASSWORD="f6%w=CcA%b" # 這邊可以自行設定密碼,但須遵守 SQL Server 密碼的規則。
# 啟動 SQL Server 服務
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=$MSSQL_SA_PASSWORD" \
-p 1433:1433 --name sql1 --hostname sql1 \
--platform linux/amd64 \
-d \
mcr.microsoft.com/mssql/server:2022-latest如果建立失敗,請排查:
1433port 是否被佔用- 是否有其他服務使用相同的 container name
docker logs -f sql1是否有無錯誤訊息 -> 自己發生過密碼不符合規定的問題- …暫未想到其餘問題。
| 參數 | 描述 |
|---|---|
ACCEPT_EULA | 必須設定為 Y,代表同意使用 SQL Server 的 EULA |
MSSQL_SA_PASSWORD | SQL Server 的 sa 密碼 |
-p 1433:1433 | 將 container 的 1433 port 對應到 host 的 1433 port |
--name sql1 | container 的名稱 |
--hostname sql1 | container 的 hostname |
--platform linux/amd64 | 指定 container 的平台 Mac M Cipher |
-d | 在背景執行 |
mcr.microsoft.com/mssql/server:2022-latest | SQL Server 的 image 名稱 |
Docker 相關操作:
# 1) 連入容器使用容器
docker exec -it sql1 bash
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "{{ 這邊是 MSSQL_SA_PASSWORD 的密碼 }}"
2) 直接透過連入 sqlcmd 終端進行測試
docker exec -ti sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P $MSSQL_SA_PASSWORD停用 SA 帳戶
… 略(請參考) …
使用 sqlcmd 進行基本操作
在 mssql sqlcmd 中,運行語句時尚未被執行,直到輸入
GO為止。
建立新的資料庫
CREATE DATABASE TestDB;
SELECT Name from sys.databases;
GO 插入資料
USE TestDB;
CREATE TABLE Inventory(id INT, name NVARCHAR(50), quantity INT);
INSERT INTO Inventory VALUES (1, 'banana', 150);
INSERT INTO Inventory VALUES (1, 'orange', 154);
GO撈取資料
SELECT * FROM Inventory WHERE quantity > 152;離開終端
QUIT
