以Docker形式部署Sqlserver


以docker形式部署Sqlserver

前言

最近朋友需要一個Sqlserver實例用來學習SQL語句,上(sou)網(suo)發現,微軟的Sqlserver已經支持跑在Linux上,也同樣提供了Docker版本,正好能跑在24小時開機的黑群暉上。

安裝部署

  1. 環境
    CPU: J1900
    內存: 8G
    系統: DSM 6.2.1-23824 Update 1
    軟件版本: Docker version 18.09.8, build 2c0a67b

  2. 拉取鏡像

sudo docker pull mcr.microsoft.com/mssql/server:latest

其中會拉取多個鏡像層,其中倒數第二和第三個鏡像層,速度尤為緩慢,可能與微軟的相應服務器在海外有關,需要某些形式的加速服務。

$ sudo docker pull mcr.microsoft.com/mssql/server:latest
latest: Pulling from mssql/server
8e128b580ca0: Pull complete
069545734e12: Pull complete
5e3755f4d999: Pull complete
c1b41e6e4ba8: Pull complete
d8579de2f3a2: Pull complete
9d72f33eeb8c: Downloading [===================>                               ]  142.7MB/359.7MB
547793e22b5b: Download complete

拉取完后可用看到鏡像已經躺好。

$ sudo docker images
Password:
REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE
mcr.microsoft.com/mssql/server   latest              a8948ed97d80        2 weeks ago         1.39GB
  1. 啟動容器
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Pass@w0rd" \
   -p 51433:1433 --name mssql -h mssql \
   -d mcr.microsoft.com/mssql/server:latest

-e "ACCEPT_EULA=Y" 為同意用戶協議,保持不用改就行。
"SA_PASSWORD=Pass@w0rd" 為SA用戶設置密碼,強度要求是至少8位且大小寫字母、數字、符號4種中有3種即可。
-p 51433:1433 為容器轉發端口,前者為宿主機端口,后者為Sqlserver默認端口
--name mssql 為容器名,自己手動指定一個
-h mssql 為容器內的主機名,我設置的同容器名,避免混淆
-d 容器將在后台運行
mcr.microsoft.com/mssql/server:latest 微軟的倉庫

  1. 查看容器狀態
$ sudo docker ps
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                     NAMES
2cbfe02bf409        mcr.microsoft.com/mssql/server:latest   "/opt/mssql/bin/perm…"   6 hours ago         Up 6 hours          0.0.0.0:51433->1433/tcp   mssql
  1. 修改密碼

    官方建議修改SA密碼,因為在安裝時設置的SA密碼會保存在環境變量SA_PASSWORD中。

$ sudo docker exec -it mssql /bin/bash
Password:
mssql@mssql:/$
mssql@mssql:/$ echo $SA_PASSWORD
Pass@w0rd

​ 通過以上查看環境變量,即可看到。

$ sudo docker exec -it mssql /opt/mssql-tools/bin/sqlcmd \
   -S localhost -U SA -P Pass@w0rd \
   -Q 'ALTER LOGIN SA WITH PASSWORD=NewPass@w0rd'

​ 以上,通過sqlcmd工具,輸入老密碼,設置新密碼。

​ 接下來我們就可以使用Sqlserver數據庫了。

  1. 使用sqlcmd進入數據庫
$ sudo docker exec -it mssql /opt/mssql-tools/bin/sqlcmd \
   -S localhost -U SA -P Pass@w0rd
Password:
1>
2>
3> create database TestDB001
4> go
1> select name from sys.databases
2> go
name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
TestDB
TestDB001

(6 rows affected)

​ 如圖,sqlcmd中每次輸入命令需要輸入go才能提交執行。以上成功的創建了一個名為TestDB001的數據庫。

小坑

  1. 使用Navicat連接Sqlserver數據庫時,若端口號不是默認端口號,需要在主機IP后使用英文逗號加端口號的形式。
  2. 對於Navicat,以上設置后,需要安裝SQL Server Native Client 10.0驅動,安裝程序為Navicat軟件根目錄下的sqlncli_x64.msi,32位版也有提供。安裝完成后,創建Sqlserver連接時高級選項卡中的Native Client驅動將有下拉選項可供選擇。

參考

  1. 快速入門:使用 Docker 運行 SQL Server 容器映像 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker


免責聲明!

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



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