Docker:再Linux Ubuntu上建立MS SQL Server Container

Linux Ubuntu安裝Docker Engine來跑MS SQL Server

公司資料庫是使用PostgreSQL,但有些資料處理還是習慣用MS SQL Server來做,但公司電腦因為某些因素而無法安裝MS SQL Server。


於是前陣子在公司筆電上安裝Docker Desktop on Windows,成功用Docker建立一個本機的MS SQL Server(請參考:利用Docker Desktop on Windows建立Sql Server Container),沒想到過沒多就卻收到MIS來信通知,Docker Desktop on Windows安裝在公司電腦有授權相關問題,請盡速移除。


趁最近比較有空,乾脆自己架了台Linux並安裝Docker Engine來跑MS SQL Server,研究了一整天,後來也終於成功了,也順便把這個過程記錄下來,有些步驟是跟之前使用Docker Desktop on Windows架設MS SQL Server是差不多的,可以去舊文章看一下喔。

  • 環境建置

1.原本是把VM建在VirtualBox上面,但網路設置一直有問題,一下子本機無法上網,本機能上網後變成虛擬機又無法上網,於是想說換到Hyper-V上建立虛擬環境。結果Hyper-V安裝Linux的iso檔會一直卡在某個地方,不想浪費時間研究,於是把在VirtualBox建立好的Linux環境的vhd檔匯入Hyper-V,沒想到就這樣成功了@@

安裝的Linux版本是Ubuntu 桌面版本 20.04 LTS(下載網址:Ubuntu 下載)

2.測試linux可以正常進入&網路連線是否正常

3.確定環境沒有問題後,我習慣先建立一份原始環境的快照


  • 安裝Docker Engine

1.按照官網(https://docs.docker.com/engine/install/ubuntu/)的步驟先安裝Docker Engine

2.按照上一步驟安裝完Docker Engine後,應該會pull一個測試image[hello-world]下來,我們可以用docker image ls來看看image列表是否有這個image。這時會出現下面問題,有發現到裡面有關鍵字permission denied,可得知應該是權限不足的問題,在指令前面加上sudo即可解決問題,詳細解決方法可以參考[解決方法] docker: permission denied  


  • pull MS SQL Server的Image以及建立Container

1.安裝好Docker Engine後,到Docker Hub找到sqlserver的image,並pull下來。我在Docker Hub搜尋mssql都找不到Microsoft官方的image,後來直接用谷歌[docker mssql image]就有了。
相關連結:https://hub.docker.com/_/microsoft-mssql-server

網頁裡會有pull cmd讓你複製

我也順便附上cmd

sudo docker pull mcr.microsoft.com/mssql/server

拉下來後,可以查詢Image

sudo docker images

2.把Image拉下來後,就可以開始建立Container了。相關的cmd,sqlserver Docker Hub的網頁裡面也有。不同的版本cmd也會不一樣!!!

sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD={你的密碼}" -p 1433:1433 --name {Container名稱} -d mcr.microsoft.com/mssql/server:2019-latest

建立Container後查詢Container(只會顯示執行中的Container,如果Container狀態為Exite,則要下sudo docker start [ContainerID]來重新啟動Container)

sudo docker ps

  • 於本機使用SSMS測試連線
連線成功了!!

 

Ref:
1.北風資料庫下載

2.Docker 基本指令操作

3.Linux 上的 SQL Server 的安裝指引