[Docker]建立一個 Sql Server container

最近切回windows來建立環境

結果發現sql server 忘了密碼

還好沒有甚麼重要的東西

外加上硬碟空間不太夠

所以決定把SQL Server砍掉 建立一個container吧

os version : win 10 professional

 記得先到Docker HUB註冊一個帳號

註冊好了之後下載Docker Desktop for Windows

在下載的期間 請到"控制台\程式集\程式和功能" 點選"開啟或關閉Windows功能"

把Hyper-V都打勾起來 確認剛剛的下載完畢 這個也安裝完畢後就重開機吧

重新回到了windows 先把docker for windows destop安裝起來

安裝好了以後才有辦法再命令提示字元直接使用docker指令哦!

第一步 尋找image : docker search

docker search mssql

因為我是要省硬碟空間 所以我選擇了microsoft/mssql-server-linux
注意如果你選到的是windows表示mssql是安裝在windows裡面的image 通常很佔空間
而且語法會跟我之後寫得不太依樣哦! 畢竟我下的語法就會是bash不是cmd


第二步 pull image : docker pull

docker pull microsoft/mssql-server-linux


image 不大應該很快就下載好囉!

第三步 查看image:docker images

docker images


你可能會跟我說 也是很大啊1.35G 恩...改天你裝裝看windows版的就知道惹..

第四步 建立Container:docker run (為了方便閱讀下面的程式碼有換行 要貼到命令提示字元前請把換行刪除哦!)

docker run -e "ACCEPT_EULA=Y" 
-e "MSSQL_SA_PASSWORD=需要輸入一個超級困難的密碼" 
-p 1433:1433 
--name 輸入你的container名稱(當然是要英文來者)
-d microsoft/mssql-server-linux
  • -e ACCEPT_EULA=Y : 設定環境中授權條款同意書 ( Y )
  • -e "MSSQL_SA_PASSWORD:需要輸入一個超級困難的密碼" : 請輸入一個Really Strong PWD
  • -p 1433:1433 :設定連線阜號,那為什麼有兩個呢?因為第一個是你本機的另外一個是Container的
  • --name:輸入你的containder名稱啦!!!
  • -d microsoft/mssql-server-linux:-d 是run container background 好了之後show container ID給我就好的意思 後面的就是IMAGE名稱啦

第五步 查看Container:docker ps

docker ps


恩..我知道排版不是很好看...

第六步 執行Command在一個執行中的Container:docker exec

docker exec -it 你的Containder名稱 bash
  • -i : 開啟互動介面
  • -t:建立一個偽終端機

bash 是因為在linux系統 如果要在windows 應該是cmd

看到root@開頭表示進來啦!!

第七步 新增sqlcmd到環境變數(PATH)中

有兩種方式:

  • 新增sqlcmd到一個需要登入的session到Path中 
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
  • 新增sqlcmd到一個不需要登入的session到Path中
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

我是採用第2種

第8步 使用sqlcmd連線到sqlserver

sqlcmd -S localhost -U SA -P '<YourPassword>'

要離開的話 輸入exit就可以囉!

第9步 使用SSMS連線到sqlserver


看到這裡就成功囉!

其他比較常見的docker功能 改天再分享吧!

以上如有繆誤 請多多指教

資料來源:
docker doc:https://docs.docker.com/
MSDN doc:https://docs.microsoft.com/zh-tw/sql/linux/sql-server-linux-configure-docker?view=sql-server-ver15

-----------------------------------------

有時在會走之前你就得跑

你不解決問題 就等問題解決你