# 記錄在 WSL 2 使用 Docker 安裝 SQL Server for Linux 的過程

以下是自己參照網路上文章實際操作的記錄，僅供參考。（使用的軟體環境附於文末）

---

在控制台的「開啟或關閉 Windows 功能」開啟下列 2 個選項：

* Windows 子系統 Linux 版
    
* 虛擬機器平台
    

系統會請你重新啟動電腦。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1681576100246/33b8c4ad-1381-4d4b-a6f5-2b43029dd215.png align="center")

重新啟動後，到 Microsoft Store 選擇欲安裝 Linux 發行版本，此次選擇安裝 [Ubuntu 18.04](https://www.microsoft.com/zh-tw/p/ubuntu-1804-lts/9n9tngvndl3q)。

將 Ubuntu 18.04 安裝完成後，第一次啟動會提示設定使用者帳戶及密碼名稱，設定完成後就可先關閉。（只有第一次啟動會比較久，之後通常都會是秒開。）

接著，在命令提示字元輸入以下指令查看剛剛安裝的 Ubuntu 有沒有出現，此時命令提示字元上的對應 VERSION 應該為 1，代表使用 WSL 1。

```bash
wsl -l -v
```

接著我們要將 WSL 的版本設定為 2，請在命令提示字元輸入以下指令來設定 Ubuntu 的 WSL 版本。

> 此時可能會提示[更新 Linux 核心](https://docs.microsoft.com/zh-tw/windows/wsl/wsl2-kernel)，更新完成後請再次執行指令。

```bash
wsl --set-version Ubuntu-18.04 2
```

待前述動作完成後，此時 `wsl -l -v` 顯示的 VERSION 就會為 2 了。

---

在 Windows 10 上安裝 [Docker Desktop for Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows/)，安裝完成會提示重新登入 Windows。

重新登入後，在 Docker Desktop 的選項中確認下列選項已開啟：

* General → Use the WSL 2 based engine
    
* Resources → WSL INTEGRATION → Ubuntu 18.04
    

記得按下右下角的 Apply & Restart 儲存。

將剛剛安裝的 Ubuntu 18.04 打開，並輸入以下指定下載最新版的 [SQL Server 的 Image](https://hub.docker.com/_/microsoft-mssql-server)。

```bash
docker pull mcr.microsoft.com/mssql/server:2019-latest
```

接著輸入下列指令來建立容器。

```bash
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<SQL Server連接密碼>" -p 1433:1433 --name <自訂容器名稱> -d mcr.microsoft.com/mssql/server:2019-latest
```

執行完成後，可用 `docker ps` 列出容器資訊，查看 STATUS 是否為 Up 開頭，若是則代表有在執行，到此就完成 SQL Server for Linux 的安裝啦！

---

如果要使用 SSMS 連線，因為是安裝在同一台電腦上，伺服器名稱請輸入 localhost,1433，然後使用 sa 與剛剛設定的密碼進行連線。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1681576554195/c99d1b95-e79a-42ea-8d5a-25ea3caaf9ef.png align="center")

> 若按下連線後遇到下圖「與伺服器的連接已成功建立，但在登入前的信號交換時發生錯誤」，可能的解法是透過右下角「選項」按鈕展開「連接屬性」頁籤，將「加密連接」取消勾選，應可排除問題。
> 
> ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1681576580969/147121ac-673e-4801-98fd-b9ab08acc1a7.png align="center")
> 
> ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1681576612107/b35ec8cd-c8b3-4758-a038-a9a85b93b36e.png align="center")

如要更詳細的說明，請參考下方連結。

參考資料：

* [Windows 10 上適用於 Linux 的 Windows 子系統安裝指南](https://docs.microsoft.com/zh-tw/windows/wsl/install-win10)
    
* [Docker Desktop WSL 2 backend](https://docs.docker.com/docker-for-windows/wsl/)
    
* [使用 Windows 上的 SQL Server Management Studio 來管理 Linux 上的 SQL Server](https://docs.microsoft.com/zh-tw/sql/linux/sql-server-linux-manage-ssms?view=sql-server-ver15)
    
* [快速入門：使用 Docker 執行 SQL Server 容器映像](https://docs.microsoft.com/zh-tw/sql/linux/quickstart-install-connect-docker)
    
* [一次就愛上MS SQL SERVER FOR LINUX](https://blog.kkbruce.net/2017/12/ms-sql-server-for-linux.html#.XwCiXygzaUl)
    
* [\[Docker\] SQL Server Container 快速入門](https://mileslin.github.io/2019/04/SQL-Server-Container-%E5%BF%AB%E9%80%9F%E5%85%A5%E9%96%80/)
    
* [在 Docker 下建立並使用 MSSQL Server for Linux](https://titangene.github.io/article/docker-mssql-server-for-linux.html)
    
* [SSMS 連接問題討論串](https://github.com/microsoft/mssql-docker/issues/478#issuecomment-624337830)
    

作業環境：

* Windows 10 (64-bit) 2004 版本
    
* SQL Server Management Studio 18.5.1
    
* Docker Desktop for Windows 2.3.0.3
    
* Ubuntu 18.04 LTS (Microsoft Store app)
