使用docker建立和執行跨平臺的容器化的mssql資料庫

颺大神 發表於 2022-05-25
資料庫 Docker SQL

我們一般啟用sql server資料庫要麼選擇安裝SQL Server例項和管理工具(SSMS),要麼用vs自帶的資料庫。如今net跨平臺成為趨勢,今天給大家介紹另一種我最近在玩的方式,即使用docker建立並啟用sql資料庫。

本章介紹了在window10專業版下如何利用docker建立mssql資料庫,包括以下主題:

  • 安裝並驗證docker
  • 利用docker建立mssql例項
  • 使用vs2022連線sql

首先我們看下sql自帶的資料庫管理工具,開啟vs2022-檢視-SQL Server物件資源管理器,在SQL Server例項中第一個選項就是vs自帶的資料庫。

使用docker建立和執行跨平臺的容器化的mssql資料庫

在接下來的內容中我們來試著新增一個基於docker的資料庫容器映象

1.開啟虛擬化服務

  在安裝docker之前,需要確保虛擬化服務是開啟狀態。右鍵win圖示,選擇應用和功能(或者開啟控制皮膚),點選程式和功能-啟用或關閉windows功能,勾選Hyper-V,點選確定開啟功能。(如果是win10家庭版的話,是看不到Hyper-V選項的,比較麻煩,需要修改登錄檔,但網上有教程,可以搜尋並按照教程做)

使用docker建立和執行跨平臺的容器化的mssql資料庫

2.安裝Docker desktop

在docker官網根據需要選擇下載安裝程式,我們選擇windows版本。安裝完成以後docker會自動啟動,工作列會有一個鯨魚圖示,表明docker正在執行。

使用docker建立和執行跨平臺的容器化的mssql資料庫

我們可以通過命令列驗證一下docker的安裝情況,輸入docker --version可以看到版本資訊

使用docker建立和執行跨平臺的容器化的mssql資料庫

 也可以郵件鯨魚圖示,點選About Docker Desktop檢視

使用docker建立和執行跨平臺的容器化的mssql資料庫

 3.部署本地mssql資料庫 

  第一步:拉取 SQL Server 2019 Linux 容器映象,開啟命令列,輸入docker pull mcr.microsoft.com/mssql/server:2019-latest

使用docker建立和執行跨平臺的容器化的mssql資料庫

 

 輸入docker images檢視映象

使用docker建立和執行跨平臺的容器化的mssql資料庫

 

第二步:1.執行容器映象,命令列輸入docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyStrongPwd!2#" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest

其中: ACCEPT_EULA=Y表示接受終端使用者許可協議

    SA_PASSWORD=MyStrongPwd!2#表示賬戶名sa,密碼MyStrongPwd!2#

      -p設定埠 1433:1433 前者表示對外提供的訪問埠號,後者表示容器內部的埠號(如果這一步報錯"docker: Error response from daemon: Ports are not available...",這說明埠被佔用了,一般是被sqlserver服務佔用了,可以開啟sqlserver配置管理器將Sql server服務停止即可)

    -d設定映象名,設定為拉取的映象mcr.microsoft.com/mssql/server:2019-latest

      還可以通過 --name xxxx 為容器指定一個自定義名稱,通過--hostnam xxxx設定容器主機名,如果不設定docker會隨機給容器命名。

   2.檢視執行狀況,命令列輸入docker ps,可以看到正在執行

使用docker建立和執行跨平臺的容器化的mssql資料庫

   3.另外也能在Docker Desktop-Container檢視剛剛建立的容器

使用docker建立和執行跨平臺的容器化的mssql資料庫

4.使用VS驗證

 開啟vs的SQL Server物件資源管理器,點選左上角新增 SQL Server按鈕,輸入資訊,點選連線

使用docker建立和執行跨平臺的容器化的mssql資料庫

完成後在SQL Server例項列表裡可以看到新增了一個localhost伺服器,說明vs已經連線上docker建立的sql了

使用docker建立和執行跨平臺的容器化的mssql資料庫

 

 因為還沒有建立資料庫,所以只能看到系統資料庫,下一篇我們將使用EFCore建立並初始化資料庫。