[Docker] SQL Server Container 快速入門
在看完 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 Container1
docker pull mcr.microsoft.com/mssql/server:2017-latest
執行 Container1
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 Management Studio(SSMS) 連線到 SQL Server
接下來,我們要找到 Docker 的 IP,才能夠連線到 SQL Server。 請輸入 ipconfig
查詢電腦的 IP 資訊,輸入完後你會看到 DockerNAT 的網路資訊,如下圖。
找到 IP 後,就可以連線囉,我這麼的 IP 的範例是 10.0.75.1,就讓我們使用 sa 帳號與剛剛設定好的密碼連線吧。
連線成功!!!
接下來就跟平常使用 SQL Server 一樣囉。
使用 Docker 互動模式進入 Container 的 bash
除了使用 SSMS 連線之外,我們還可以使用 Docker 互動模式進入 Container 的 bash 執行指令。 為了展示互動模式範例,我先建立 SSMS 建立好了Sample 資料庫跟一些假資料,如下圖。
請執行下方指令,進入互動模式1
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
1 | /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>' |
成功連線後,接下來就跟一般下 sql 指令一樣了,如下圖的 SELECT 範例。
延伸閱讀
[Quickstart: Run SQL Server container images with Docker]
[Configure SQL Server container images on Docker]
[Docker Hub - Microsoft SQL Server]