概述
一般情況下,部署sql server,需要準備一臺windows server伺服器,然後再安裝sql server。
但是windows太耗費資源了,在docker中執行,是比較方便的。
硬體和軟體要求
要在 Docker 容器上安裝 SQL Server 2019,主機伺服器必須滿足以下要求:
- 任何受支援的 Linux 分發版或 Windows 或 Mac 上裝有 Docker 引擎 1.8 或更高版本
- 至少 2 GB 的記憶體
- 2 GB 的磁碟空間
下載映象
docker hub地址:https://hub.docker.com/r/microsoft/mssql-server
目前最新版本是2022
docker pull mcr.microsoft.com/mssql/server:2022-latest
安裝sql server
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Y.saabcd@1234" -p 1433:1433 -e "MSSQL_PID=Evaluation" --name sqlpreview --hostname sqlpreview -d mcr.microsoft.com/mssql/server:2022-latest
引數說明:
引數 | 說明 |
-e "ACCEPT_EULA=Y" | 將 ACCEPT_EULA 變數設定為任意值,以確認接受終端使用者許可協議。 SQL Server 映像>的必需設定。 |
-e "MSSQL_SA_PASSWORD=Y.saabcd@1234" | 指定至少包含 8 個字元且符合密碼策略的強密碼。 SQL Server 映像的必需設定。 |
-e "MSSQL_COLLATION=<SQL_Server_collation>" | 指定自定義 SQL Server 排序規則,而不使用預設值 SQL_Latin1_General_CP1_CI_AS。 |
-p 1433:1433 | 將主機環境中的 TCP 埠(第一個值)對映到容器中的 TCP 埠(第二個值)。 在此示例中,SQL Server 偵聽容器中的 TCP 1433,此容器埠隨後會對主機上的 TCP 埠 1433 公開。 |
--name sqlpreview | 為容器指定一個自定義名稱,而不是使用隨機生成的名稱。 如果執行多個容器,則無法重複使用相同的名稱。 |
--hostname sqlpreview | 用於顯式設定容器主機名。 如果未指定主機名,則主機名預設為容器 ID,這是隨機生成的系統 GUID。 |
注意:MSSQL_SA_PASSWORD必須符合密碼策略的強密碼,如果密碼太簡單,會導致啟動失敗。
如果Docker容器啟動報WARNING: IPv4 forwarding is disabled. Networking will not work
解決方法
開啟sysctl配置檔案/etc/sysctl.conf
新增如下程式碼
net.ipv4.ip_forward=1
重新整理配置
sysctl -p
檢視日誌
docker logs -f sqlpreview
執行成功應該會看到與下面類似的輸出:
... 2024-08-18 13:12:56.66 spid14s Recovery is complete. This is an informational message only. No user action is required. 2024-08-18 13:12:56.77 spid24s The default language (LCID 0) has been set for engine and full-text services. 2024-08-18 13:12:56.83 spid24s The tempdb database has 2 data file(s).