Docker 安裝部署Sql Server


先決條件

適用於支持的任一 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鏈接

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM