一、概述
Docker持久化是指將容器中的數(shù)據(jù)持久保存在主機(jī)上,以便在容器重新啟動(dòng)或遷移時(shí)不丟失數(shù)據(jù)。由于Docker容器是臨時(shí)和可變的,它們的文件系統(tǒng)默認(rèn)是易失的,這意味著容器中的任何更改或創(chuàng)建的文件都只存在于此容器的生命周期內(nèi)。但是,在許多場(chǎng)景中,我們希望在容器終止后仍然保留數(shù)據(jù),并且能夠在容器重新啟動(dòng)時(shí)繼續(xù)使用。
為了實(shí)現(xiàn)持久化,Docker提供了幾種方法:
1、數(shù)據(jù)卷(Volumes):數(shù)據(jù)卷是容器內(nèi)和主機(jī)之間共享和持久化數(shù)據(jù)的一種方法。數(shù)據(jù)卷可以用于在容器之間共享數(shù)據(jù),也可以用于將數(shù)據(jù)保存到宿主機(jī)上的特定路徑。數(shù)據(jù)卷可以手動(dòng)創(chuàng)建,也可以在容器啟動(dòng)時(shí)自動(dòng)創(chuàng)建。
2、綁定掛載(Bind Mounts):綁定掛載允許將主機(jī)上的目錄或文件直接掛載到容器中。這種方法允許容器訪問主機(jī)上的文件系統(tǒng),并且文件的更改會(huì)同時(shí)反映在容器和主機(jī)之間。
3、臨時(shí)文件系統(tǒng)(tmpfs):tmpfs是一種內(nèi)存文件系統(tǒng),它可以在容器內(nèi)部創(chuàng)建臨時(shí)文件和目錄。tmpfs文件系統(tǒng)的數(shù)據(jù)不會(huì)寫入磁盤,而是存儲(chǔ)在內(nèi)存中。當(dāng)容器終止時(shí),tmpfs文件系統(tǒng)中的數(shù)據(jù)會(huì)被刪除。
通過使用這些持久化技術(shù),可以確保容器的數(shù)據(jù)在容器終止或重新啟動(dòng)時(shí)仍然可用,從而提高容器的可靠性和靈活性。
二、部署
1、Volumes:Docker會(huì)管理宿主機(jī)文件系統(tǒng)的一部分資源,默認(rèn)位于 /var/lib/docker/volumes 目錄中;(最常用的方式)
docker run -it -v /boot/ nginx /bin/bash
root@f470443d8604:/# touch /boot/syh.txt
root@f470443d8604:/# ls /boot/
退出(ctrl+pq),到宿主機(jī)中查看
可以看到在默認(rèn)路徑中會(huì)有在容器中創(chuàng)建的測(cè)試文件
docker volume create nginx-data 創(chuàng)建一個(gè)自定義容器卷
docker volume ls 查看所有卷組
docker volume inspect nginx-data 查看指定卷組的詳細(xì)信息
docker run -d -it --name=nginx -p 8000:80 -v 創(chuàng)建使用指定卷的容器
docker exec -it nginx /bin/bash
?把容器刪除后會(huì)發(fā)現(xiàn)文件還會(huì)存在
ls /var/lib/docker/volumes/nginx-data/_data/
docker stop nginx
docker rm nginx
ls /var/lib/docker/volumes/nginx-data/_data/
?
所以在數(shù)據(jù)卷里邊的東西是可以持久化的。如果下次還需要?jiǎng)?chuàng)建一個(gè)nginx容器,那么時(shí)候復(fù)用當(dāng)前數(shù)據(jù)卷里面文件的。
docker volume rm nginx-data 刪除卷組
docker volume ls
2、Bind Mounts的基本使用?
docker run -d -it --name=nginx -p 800:80 -v /wwwroot:/usr/share/nginx/html nginx
docker exec -it nginx /bin/bash
ls /usr/share/nginx/html
?
cat /wwwroot/index.html
echo "test html" > /wwwroot/index.html
?
docker inspect nginx 綁定驗(yàn)證
docker stop nginx 清除卷組
docker rm nginx
ls /wwwroot/
文章來源:http://www.zghlxwxcb.cn/news/detail-624925.html
同volumes一樣,當(dāng)我們清理掉容器之后,掛載目錄里面的文件仍然還在,不會(huì)隨著容器的結(jié)束而消失,從而實(shí)現(xiàn)數(shù)據(jù)持久化。
三、數(shù)據(jù)卷容器
數(shù)據(jù)卷容器(Volume containers)是一種用于存儲(chǔ)和共享數(shù)據(jù)的容器。在容器化的環(huán)境中,容器是一種輕量級(jí)的虛擬化技術(shù),可以快速啟動(dòng)和停止,但容器本身是無(wú)狀態(tài)的,不保存數(shù)據(jù)。這意味著當(dāng)容器被停止或被刪除時(shí),容器內(nèi)部的數(shù)據(jù)也會(huì)被清除。
為了解決這個(gè)問題,數(shù)據(jù)卷容器就出現(xiàn)了。數(shù)據(jù)卷容器是一種特殊的容器,它被設(shè)計(jì)用于存儲(chǔ)和管理數(shù)據(jù),并與其他容器共享數(shù)據(jù)。數(shù)據(jù)卷容器可以被掛載到其他容器中,使得這些容器可以訪問共享的數(shù)據(jù)。
數(shù)據(jù)卷容器通常不運(yùn)行任何應(yīng)用程序,它們僅用于存儲(chǔ)和管理數(shù)據(jù)。數(shù)據(jù)卷容器可以在容器化環(huán)境中創(chuàng)建、刪除和管理,同時(shí)可以通過網(wǎng)絡(luò)共享和訪問數(shù)據(jù)。這種方式使得數(shù)據(jù)在容器之間的傳輸更加方便和高效。
使用數(shù)據(jù)卷容器有以下幾個(gè)優(yōu)勢(shì):
1、數(shù)據(jù)持久化:數(shù)據(jù)卷容器可以存儲(chǔ)數(shù)據(jù),并在容器的生命周期中持久存在,即使容器被重新啟動(dòng)或刪除,數(shù)據(jù)也不會(huì)丟失。
2、數(shù)據(jù)共享:數(shù)據(jù)卷容器可以被多個(gè)容器同時(shí)掛載和訪問,實(shí)現(xiàn)數(shù)據(jù)的共享和協(xié)作。
3、靈活性:可以隨時(shí)創(chuàng)建、刪除和管理數(shù)據(jù)卷容器,使得環(huán)境的配置更加靈活和可擴(kuò)展。
總之,數(shù)據(jù)卷容器是容器化環(huán)境中用于存儲(chǔ)和共享數(shù)據(jù)的一種解決方案,它可以幫助我們實(shí)現(xiàn)數(shù)據(jù)的持久化、共享和靈活管理。
創(chuàng)建數(shù)據(jù)卷容器,并在其中創(chuàng)建一個(gè)數(shù)據(jù)卷掛載到/dbdata
docker run -it -v /dbdata:/dbdata --name=dbdata nginx /bin/bash
進(jìn)入test1容器創(chuàng)建文件測(cè)試
docker run -it --volumes-from dbdata --name test1 nginx /bin/bash
ls
進(jìn)入test2容器驗(yàn)證結(jié)果
docker run -it --volumes-from dbdata --name test2 nginx:1 /bin/bash
ls
ls dbdata
創(chuàng)建測(cè)試文件后退出
進(jìn)入test2查看
文章來源地址http://www.zghlxwxcb.cn/news/detail-624925.html
?說明
1、可以多次使用--volume-from參數(shù)從多個(gè)容器掛載多個(gè)目錄。也可以從其他已經(jīng)掛載了數(shù)據(jù)卷的容器來掛載數(shù)據(jù)卷(類似傳遞)。
2、再次強(qiáng)調(diào):如果刪除了掛載的容器,數(shù)據(jù)卷不會(huì)被自動(dòng)刪除。如果要?jiǎng)h除容器的時(shí)候同時(shí)刪除數(shù)據(jù)卷,需加上-v參數(shù)。
以上就是docker持久化和數(shù)據(jù)卷容器的操作
如有錯(cuò)誤歡迎各位大佬批評(píng)指正,我們共同進(jìn)步
到了這里,關(guān)于小白到運(yùn)維工程師自學(xué)之路 第六十二集 (docker持久化與數(shù)據(jù)卷容器)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!