SQL Server Container 快速入門
下載 Images 與執行 SQL Server Container
環境需求就不贅述了,想要瞭解可以看這邊 Prerequisites。
所以就讓我們開始吧。 請先執行下方指令,下載最新版的 SQL Server 2017 Linux Container
- bash
docker pull mcr.microsoft.com/mssql/server:2017-latest
執行 Container
- bash
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong!Passw0rd>" -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest
SQL2017
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=!Passw0rd" -p 14307:1433 --name mssql17 -v mssql17data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
- -e “ACCEPT_EULA=Y” 表示你同意 End-User Licensing Agreement, 如果這環境變數沒有設定,會沒辦法用此 Container 喔
- -e “SA_PASSWORD=< YourStrong!Passw0rd >” 設定登入的密碼,該密碼要符合 SQL Server 預設的密碼強度 (Password Policy)
- 密碼不能包含帳號的文字
- 密碼至少 8 個字元
- 密碼須包含以下至少三個字元
- 大寫英文字
- 小寫英文字
- 阿拉伯數字
- 非英文數字符號,如 #, @ 等等
- -p 1433:1433 , SQL Server 預設使用 1433 port 連接,所以要把 1433 port 與 host system 1433 port mapping 在一起
- -d ,允許 Container 在背景執行
- –name sql1 指定 Container 的別名為 sql1
- mcr.microsoft.com/mssql/server:2017-latest, Image 的名稱
version: "3"
services:
sqldata:
image: mcr.microsoft.com/mssql/server:2022-latest
environment:
- SA_PASSWORD=Pass@word
- ACCEPT_EULA=Y
volumes:
- "sql1data:/var/opt/mssql"
ports:
- "5434:1433"
volumes:
sql1data:
並輸入docker compose up -d --build執行 Container
接下來執行 docker ps 檢查 Container 是否有執行起來,執行成功的話會,會看到如下圖的畫面,且 Stauts 會顯示 Up。 如果沒有的話,可以參考 Troubleshooting section of the configuration guide。
使用 SQL Server Management Studio(SSMS) 連線到 SQL Server
接下來,我們要找到 Docker 的 IP,才能夠連線到 SQL Server。 請輸入 ipconfig 查詢電腦的 IP 資訊,輸入完後你會看到 DockerNAT 的網路資訊,如下圖。
找到 IP 後,就可以連線囉,我這麼的 IP 的範例是 10.0.75.1,就讓我們使用 sa 帳號與剛剛設定好的密碼連線吧。
如果是在本機開發,請使用127.0.0.1感localhost
如果有特殊Port,請以,分開
連線成功!!!
接下來就跟平常使用 SQL Server 一樣囉。
使用 Docker 互動模式進入 Container 的 bash
除了使用 SSMS 連線之外,我們還可以使用 Docker 互動模式進入 Container 的 bash 執行指令。 為了展示互動模式範例,我先建立 SSMS 建立好了Sample 資料庫跟一些假資料,如下圖。
請執行下方指令,進入互動模式
- bash
docker exec -it sql1 "bash"
- exec 說明要執行指令
- -it 進入互動模式
- 指定 sql1 這個 Container
輸入完指令就會看到下圖,進入的 Container 的 bash
根據 Quickstart: Run SQL Server container images with Docker 的說明,sqlcmd 是放在 /opt/mssql-tools/bin/sqlcmd 路徑底下,知道路徑後,我們就可以用 sqlcmd 連線到 SQL Server。 請執行下方指令
- bash
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'
成功連線後,接下來就跟一般下 sql 指令一樣了,如下圖的 SELECT 範例。






