跳到主內容

SQL Server Container 快速入門

下載 Images 與執行 SQL Server Container

環境需求就不贅述了,想要瞭解可以看這邊 Prerequisites

所以就讓我們開始吧。 請先執行下方指令,下載最新版的 SQL Server 2017 Linux Container

pull container
  • bash
docker pull mcr.microsoft.com/mssql/server:2017-latest

執行 Container

run 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
  • -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 的名稱
或使用docker-compose.yml
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 RunningSQL Server Running

 

使用 SQL Server Management Studio(SSMS) 連線到 SQL Server

接下來,我們要找到 Docker 的 IP,才能夠連線到 SQL Server。 請輸入 ipconfig 查詢電腦的 IP 資訊,輸入完後你會看到 DockerNAT 的網路資訊,如下圖。

Docker NAT


找到 IP 後,就可以連線囉,我這麼的 IP 的範例是 10.0.75.1,就讓我們使用 sa 帳號與剛剛設定好的密碼連線吧。

如果是在本機開發,請使用127.0.0.1localhost

如果有特殊Port,請以,分開

connect-to-sql-server


連線成功!!!

connected

 

接下來就跟平常使用 SQL Server 一樣囉。


使用 Docker 互動模式進入 Container 的 bash

除了使用 SSMS 連線之外,我們還可以使用 Docker 互動模式進入 Container 的 bash 執行指令。 為了展示互動模式範例,我先建立 SSMS 建立好了Sample 資料庫跟一些假資料,如下圖。

sample datasample data

 

請執行下方指令,進入互動模式

docker 互動模式
  • bash
docker exec -it sql1 "bash"

 

  • exec 說明要執行指令
  • -it 進入互動模式
  • 指定 sql1 這個 Container

輸入完指令就會看到下圖,進入的 Container 的 bash

container bash

 

根據 Quickstart: Run SQL Server container images with Docker 的說明,sqlcmd 是放在 /opt/mssql-tools/bin/sqlcmd 路徑底下,知道路徑後,我們就可以用 sqlcmd 連線到 SQL Server。 請執行下方指令

connect to sql server
  • bash
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'

成功連線後,接下來就跟一般下 sql 指令一樣了,如下圖的 SELECT 範例。

sqlcmd select