先決條件
適用於支持的任一 Linux 分發版的 Docker 引擎 1.8 以上版本,或適用於 Mac/Windows 的 Docker。 有關詳細信息,請參閱安裝 Docker。
至少 4 GB 的磁盤空間
至少 4 GB 的 RAM
在 Linux 上的 SQL Server 的系統需求。
重要
Docker for Mac 和 Docker for Windows 的 Moby VM 默認大小為 2 GB,因此必須將其更改為 4 GB。如果你在 Mac 或 Windows 上運行,請使用以下過程來增加內存。
Docker 將內存增加為 4 GB (Mac)
以下步驟適用於為 4 GB 的 Mac for Docker 增加內存。
單擊頂部狀態欄上的 Docker 徽標。
選擇首選項。
將內存指示器移到 4 GB 或以上。
單擊重新啟動在屏幕的按鈕的按鈕。
Docker 將內存增加為 4 GB (Windows)
以下步驟來增加為用於 Windows 的 Docker 為 4 GB 內存。
右鍵單擊任務欄中的 Docker 圖標。
單擊設置該菜單下。
單擊高級選項卡。
將內存指示器移到 4 GB 或以上。
單擊應用按鈕。
1.請求和運行容器映像
從 Docker Hub 中拉出 SQL Server 2017 Linux 容器映像。
bash復制
sudo docker pull microsoft/mssql-server-linux:2017-latest
PowerShell 復制
docker pull microsoft/mssql-server-linux:2017-latest
前一個命令中提取最新的 SQL Server 2017 容器映像。 如果你想要請求的特定映像,則添加冒號和標記名稱 (例如, microsoft/mssql-server-linux:2017-GA)。 若要查看所有可用映像,請參閱mssql server linux Docker 中心頁。
2.若要使用 Docker 運行容器映像,可以使用以下命令從 bash shell (Linux/macOS) 或提升的 PowerShell 命令提示符。
bash復制
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \
-p 1401:1433 --name sql1 \
-d microsoft/mssql-server-linux:2017-latest
修改為
sudo docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=CbA4321@' \
-p 1401:1433 --name sql1 \
-d microsoft/mssql-server-linux:2017-latest
PowerShell 復制
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" `
-p 1401:1433 --name sql1 `
-d microsoft/mssql-server-linux:2017-latest
修改為
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=CbA4321@" `
-p 1401:1433 --name sql1 `
-d microsoft/mssql-server-linux:2017-latest
3.備注
默認情況下,這將創建一個容器的 SQL Server 2017 開發人員版。 在容器中運行生產版本的過程是略有不同。 有關詳細信息,請參閱運行容器映像的生產。
下表提供了參數在前面的說明docker run示例:
參數 Description
-e ACCEPT_EULA = Y 設置ACCEPT_EULA變量為任何值,以確認你接受最終用戶許可協議。 SQL Server 映像的必需設置。
-e MSSQL_SA_PASSWORD =<YourStrong !Passw0rd> 指定你自己的強密碼至少 8 個字符並達到SQL Server 密碼要求。 SQL Server 映像的必需設置。
-p 1401:1433 建立主機環境(第一個值)上的 TCP 端口與容器(第二個值)中 TCP 端口的映射。 在此示例中,SQL Server 偵聽 TCP 1433 容器中,並且這公開給端口 1401,主機上。
-名稱 sql1 指定容器,而不是一個隨機生成的自定義名稱。 如果你運行多個容器,你無法重用此相同的名稱。
microsoft/mssql-server-linux:2017-latest SQL Server 2017 Linux 容器映像。
4.若要查看你的 Docker 容器,請使用docker ps命令。
bash復制
sudo docker ps -a
PowerShell 復制
docker ps -a
將看到與如下屏幕截圖相似的輸出:

5.如果狀態列顯示的狀態向上,然后在容器中運行 SQL Server 且在偵聽端口指定端口列。 如果狀態你 SQL 服務器容器顯示的列Exited,請參閱故障排除部分中的配置指南。
-h (主機名) 參數也非常有用,但不是使用在本教程中為簡單起見,它。 這會容器的內部名稱更改為自定義值。 這是你將看到以下 TRANSACT-SQL 查詢中返回的名稱:
SQL復制
SELECT @@SERVERNAME,
SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
SERVERPROPERTY('MachineName'),
SERVERPROPERTY('ServerName')
設置-h和--name為相同的值是一種好方法,可以輕松地識別目標容器。
更改 SA 密碼
SA 帳戶是安裝過程中在 SQL Server 實例上創建的系統管理員。 創建 SQL Server 容器后,通過在容器中運行 echo $MSSQL_SA_PASSWORD,可發現指定的 MSSQL_SA_PASSWORD 環境變量。 出於安全考慮,請考慮更改 SA 密碼。
1.選擇 SA 用戶要使用的強密碼。
2.使用 docker exec 運行sqlcmd,以使用 Transact-SQL 更改密碼。
將 <YourStrong!Passw0rd> 和 <YourNewStrong!Passw0rd> 替換為自己的密碼值。
bash復制
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P '<YourStrong!Passw0rd>' \
-Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong!Passw0rd>"'
PowerShell 復制
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
-S localhost -U SA -P "<YourStrong!Passw0rd>" `
-Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong!Passw0rd>'"
連接到 SQL Server
下列步驟將使用 SQL Server 命令行工具, sqlcmd,要連接到 SQL Server 的容器內。
1.使用docker exec -it命令來啟動交互式 bash shell 內你正在運行的容器。 在下面的示例sql1由指定名稱--name參數創建容器時。
bash復制
sudo docker exec -it sql1 "bash"
PowerShell 復制
docker exec -it sql1 "bash"
2.一旦位於容器內部,使用 sqlcmd 進行本地連接。 Sqlcmd 不在默認情況下,路徑因此你必須指定完整路徑。
bash復制
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourNewStrong!Passw0rd>'
提示
可以省略命令行上提示要輸入的密碼。
如果成功,應會顯示 sqlcmd 命令提示符:1>。

創建和查詢數據
以下部分將引導你使用 sqlcmd 和 Transact-SQL 完成新建數據庫、添加數據並運行簡單查詢的整個過程。
新建數據庫
以下步驟創建一個名為 TestDB 的新數據庫。
1.在 sqlcmd 命令提示符中,粘貼以下 Transact-SQL 命令以創建測試數據庫:
SQL復制
CREATE DATABASE TestDB
2.在下一行中,編寫一個查詢以返回服務器上所有數據庫的名稱:
SQL復制
SELECT Name from sys.Databases
3.前兩個命令沒有立即執行。 必須在新行中鍵入 GO 才能執行以前的命令:
SQL復制
GO

插入數據
接下來創建一個新表 Inventory,然后插入兩個新行。
在 sqlcmd 命令提示符中,將上下文切換到新的 TestDB 數據庫:
SQL復制
USE TestDB
創建名為 Inventory 的新表:
SQL復制
CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT)
將數據插入新表:
SQL復制
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
要執行上述命令的類型 GO:
SQL復制
GO

選擇數據
現在,運行查詢以從 Inventory 表返回數據。
通過 sqlcmd 命令提示符輸入查詢,以返回 Inventory 表中數量大於 152 的行:
SQL復制
SELECT * FROM Inventory WHERE quantity > 152;
執行命令:
SQL復制
GO

退出 sqlcmd 命令提示符
要結束 sqlcmd 會話,請鍵入 QUIT:
SQL復制
Quit
若要退出容器中的交互式命令提示,請鍵入exit。 退出交互式 Bash Shell 后,容器將繼續運行。
從連接容器之外
你可以還連接到 SQL Server 實例在 Docker 上從任何外部的 Linux、 Windows 或 macOS 工具支持 SQL 連接。
以下步驟使用sqlcmd外部容器連接到在容器中運行的 SQL Server。 這些步驟假定你已在你的容器之外安裝的 SQL Server 命令行工具。 相同的主體應用時使用其他工具,但連接的過程是唯一的每個工具。
查找承載你的容器的計算機的 IP 地址。 在 Linux 上,使用ifconfig或ip addr。在 Windows 上,使用ipconfig。
運行指定的 IP 地址和端口映射到容器中的端口 1433年的 sqlcmd。 在此示例中,這是端口 1401年主機計算機上。
bash復制
sqlcmd -S 10.3.2.4,1401 -U SA -P '<YourNewStrong!Passw0rd>'
PowerShell 復制
sqlcmd -S 10.3.2.4,1401 -U SA -P "<YourNewStrong!Passw0rd>"
運行 TRANSACT-SQL 命令。 完成后,鍵入QUIT。
若要連接到 SQL Server 其他常見工具包括:
Visual Studio 代碼
在 Windows 上的 SQL Server Management Studio (SSMS)
刪除容器
如果你想要刪除 SQL Server 容器使用在本教程中,運行以下命令:
bash復制
sudo docker stop sql1
sudo docker rm sql1
PowerShell 復制
docker stop sql1
docker rm sql1
注意:
用Navicat鏈接

