前言
在如今,容器化概念越來越盛行,.Net Core項目也可以跨平台部署了,那么思考下Sql Server能不能呢?當然是可以的啦。本文今天就是介紹Docker部署配置和連接Sql Server。本文基於Centos7。
配置Docker鏈接Sql Server
前提條件(至少2 GB的磁盤空間。至少2 GB的RAM)。我們現在開始配置安裝:
查詢並找到Docker Hub 上Microsoft SQL Server的介紹。
然后根據這個上docker拉取鏡像
docker pull mcr.microsoft.com/mssql/server:2017-latest
查看鏡像並允許此鏡像
docker images
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyPassWord123" -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-latest
然后查看是否允許成功
Docker ps -a
出現下圖這樣既允許成功,顯示UP(如果失敗的話通過docker logs 容器名進行查看錯誤日志)
然后這里我們就配置了SQL Server,接下來我們實際進入容器內操作。
sudo docker exec -it sql1 "bash" /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "MyPassWord123"
然后現在就可以進行日常的數據庫操作了,輸入命令后執行Go結束
創建庫
CREATE DATABASE TestDB
使用庫、創建表
USE TestDB CREATE TABLE Inventory (id INT, LastName NVARCHAR(50), FirstName NVARCHAR(50))
查詢表
Select * from Inventory
查詢用戶創建的表
select name from sysobjects where type = 'U'
系統表sysobjects保存的都是數據庫對象,其中type表示各種對象的類型,具體包括:
U = 用戶表
S = 系統表
C = CHECK 約束
D = 默認值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日志
FN = 標量函數
IF = 內嵌表函數
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 復制篩選存儲過程
TF = 表函數
TR = 觸發器
UQ = UNIQUE 約束(類型是 K)
V = 視圖
X = 擴展存儲過程及相關的對象信息。
其他配置
一、更改sa的登錄密碼
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "MyPassWord123" -Q 'ALTER LOGIN SA WITH PASSWORD="MyPassWord456"'
二、保留數據
-
- 將主機目錄裝載為數據卷
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=MyPassWord456' -p 1433:1433 -v /var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
-
- 使用數據卷容器
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=MyPassWord456' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
三、刪除或退出容器
刪除容器:docker rm 容器名
刪除鏡像:docker rmi 鏡像名
退出容器;Ctrl+D
夫志當存高遠,慕先賢,絕情欲,棄疑滯,使庶幾之志,揭然有所存,惻然有所感;忍屈伸,去細碎,廣咨問,除嫌吝,雖有淹留,何損於美趣,何患於不濟。
若志不強毅,意不慷慨,徒碌碌滯於俗,默默束於情,永竄伏於平庸,不免於下流矣。
歡迎大家掃描下方二維碼,和我一起學習更多的C#知識