日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Docker最全教程——数据库容器化之持久保存数据(十二)

發布時間:2023/12/4 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker最全教程——数据库容器化之持久保存数据(十二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一節我們講述了SQL Server容器化實踐(注意,SQL Server現在也支持跨平臺),本節將講述如何持久保存數據,并且接下來將逐步講解其他數據庫(MySql、Redis、Mongodb等等)的容器化實踐,中間再穿插一些知識點和實踐細節。由于實踐需要花費大量的時間,而目目前業務繁忙,只能加班來進行一些實踐并編寫,如果編寫比較慢,請多多海涵。


//目錄//




如何持久保存數據?

默認情況下,在容器內創建的所有文件都存儲在可寫容器層中。這意味著:

·?當該容器不再存在時,數據不會持久存在,并且如果另一個進程需要,則可能很難從容器中獲取數據。

·?容器的可寫層緊密耦合到運行容器的主機。數據遷移很麻煩。

·?寫入容器的可寫層需要存儲驅動程序來管理文件系統。存儲驅動程序使用Linux內核提供統一的文件系統。與直接寫入主機文件系統相比,這種額外的抽象降低了性能?。


因此,如果我們使用容器命令docker rm刪除了容器,那么容器中的所有內容均將丟失,包括?SQL Server 和數據庫文件。對于數據庫(不僅僅是SQL?Server)來說,了解?Docker 中的數據持久性至關重要那么我們如何在docker中持久保存我們的數據呢,即使關聯的容器已經刪除的情況下?


使用數據卷持久保存數據庫文件

卷是保存Docker容器中的數據的首選機制。雖然綁定掛載依賴于主機的目錄結構,但卷完全由Docker管理。主要有如下好處:

·?易于備份或遷移。

·?可以使用Docker CLI命令或Docker API管理卷。

·?適用于Linux和Windows容器。

·?可以在多個容器之間更安全地共享卷。

·?卷驅動程序允許在遠程主機或云提供程序上存儲卷,加密卷的內容或添加其他功能。

·?新卷可以通過容器預先填充內容。

因此,通常情況下,卷相對于容器的可寫層中的持久數據來說是更好的選擇,因為卷不會增加容器的大小,并且卷的內容存在于給定容器的生命周期之外。接下來,我們就一起來實踐。


?


方式一,使用主機目錄

首先,我們可以將主機目錄加載為容器的數據卷,用來存儲數據庫文件。例如,我們可以通過-v <host directory>:/var/opt/mssql命令參數來完成需求:

PowerShell:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=123456abcD" `

???-p 1433:1433 --name mySqlServer `

???-v d:/temp/data:/var/opt/mssql `

???-d mcr.microsoft.com/mssql/server:2017-latest


?

bash:

docker run -e 'ACCEPT_EULA=Y' \

-e 'SA_PASSWORD=123456abcD' \

-p 1433:1433 \

--name mySqlServer \

-v /temp/data:/var/opt/mssql \

-d mcr.microsoft.com/mssql/server:2017-latest


注意:-v參數應該在-d參數之前。


-v or –volume用于映射卷,冒號“:”前面的目錄是宿主機目錄,冒號后面的目錄是容器內目錄。

執行成功后,我們可以看到容器已正常運行,并且主機目錄已綁定:

?

我們啟動SSMS工具創建一個數據庫,然后打開本地資源管理器即可看到:

?

接下來,我們刪除容器,然后來驗證數據庫文件是否任然保留:

PowerShell:

set-location D:\temp\data\data

docker stop mySqlServer

docker rm mySqlServer

ls

執行結果如下所示:

?

值得注意的是,SQL?Server會自動從目錄/var/opt/mssql掛載數據庫,我們可以使用以下步驟來驗證:

第一步:

PowerShell:

docker run -e "ACCEPT_EULA=Y"?-e "SA_PASSWORD=123456abcD"?`

???-p 1433:1433?--name mySqlServer `

???-v d:/temp/data:/var/opt/mssql `

???-d mcr.microsoft.com/mssql/server:2017-latest


docker exec -it mySqlServer "bash"


第二步:

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '123456abcD'


第三步:

SELECT Name from?sys.Databases

GO


?

注意:SQL?Server容器啟動時需要一些時間,啟動完成后才能連接。


方式二,使用數據卷

我們可以使用docker?volume命令來創建卷,然后


PowerShell:

docker volume create my-data

docker volume ls


docker run -e "ACCEPT_EULA=Y"?`

???-e "MSSQL_SA_PASSWORD=123456abcD"?`

???-p 1433:1433?--name mySqlServer `

???-v my-data:/var/opt/mssql `

???-d mcr.microsoft.com/mssql/server:2017-latest


?

我們可以使用以下命令來檢查數據卷:

docker volume inspect my-data

?

同樣的,我們也可以使用上一節的命令刪除容器并再次創建來驗證數據是否丟失。這里我們就不做演示了。

Docker最全教程——從理論到實戰(一)

Docker最全教程——從理論到實戰(二)

Docker最全教程——從理論到實戰(三)

Docker最全教程——從理論到實戰(四)

Docker最全教程——從理論到實戰(五)

Docker最全教程——從理論到實戰(六)

Docker最全教程——從理論到實戰(七)

Docker最全教程——從理論到實戰(八)? ??

Docker最全教程——從理論到實戰(九)

Docker最全教程之使用Tencent&nbsp;Hub來完成CI(十)

Docker最全教程——數據庫容器化(十一)

原文地址:https://www.cnblogs.com/nasha/p/10260158.html

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com



總結

以上是生活随笔為你收集整理的Docker最全教程——数据库容器化之持久保存数据(十二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。