在看完 Quickstart: Run SQL Server container images with Docker 之後,就會發現在 Windows 上執行一個 Linux Base 的 SQL Server Container 是這麼簡單的事。 就讓我們快速進入正題,怎麼使用 SQL Server Container 吧。

今天會使用 Microsoft 官方提供的 Official images for Microsoft SQL Server on Linux for Docker Engine

下載 Images 與執行 SQL Server Container

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

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

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

執行 Container

run container
  • bash
1
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 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 NATDocker NAT

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

連線成功!!!
connectedconnected

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

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

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

sample datasample data

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

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

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

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

container bashcontainer bash

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

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

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

sqlcmd selectsqlcmd select

延伸閱讀

[Quickstart: Run SQL Server container images with Docker]
[Configure SQL Server container images on Docker]
[Docker Hub - Microsoft SQL Server]