docker使用volume和bind mount的區(qū)別及說明
使用volume和bind mount的區(qū)別

代碼示例:
在Docker中,Volume和Bind Mount是兩種不同的數(shù)據(jù)持久化機(jī)制,它們都用于將數(shù)據(jù)從容器持久化到宿主機(jī),但它們之間存在一些關(guān)鍵的區(qū)別。
Volume
- Volume是由Docker管理的存儲(chǔ)卷,它在宿主機(jī)上的位置對(duì)于用戶來說是透明的,由Docker自動(dòng)管理。
- Volume可以實(shí)現(xiàn)容器間的數(shù)據(jù)共享,并且可以在容器被刪除后仍然存在。
- Volume可以通過Docker CLI命令或API進(jìn)行管理,例如使用
docker volume create創(chuàng)建一個(gè)新的Volume,使用docker volume inspect查看Volume的詳細(xì)信息。 - Volume支持?jǐn)?shù)據(jù)的預(yù)填充,并且可以使用Volume驅(qū)動(dòng)程序在遠(yuǎn)程主機(jī)或云提供商上存儲(chǔ)數(shù)據(jù),甚至可以加密Volume的內(nèi)容或添加其他功能。
- Volume通常提供更好的性能,尤其是在Docker Desktop上相比于Mac和Windows宿主機(jī)上的Bind Mount。
- Volume可以在Linux和Windows容器中使用。
Bind Mount
- Bind Mount將宿主機(jī)上的文件或目錄直接掛載到容器中,文件或目錄在宿主機(jī)上的位置是由用戶指定的。
- Bind Mount的性能通常非常好,但它們依賴于宿主機(jī)的文件系統(tǒng)具有特定的目錄結(jié)構(gòu)。
- 使用Bind Mount時(shí),如果宿主機(jī)上的路徑不存在,Docker不會(huì)自動(dòng)創(chuàng)建它,而是會(huì)報(bào)錯(cuò)。
- Bind Mount可以設(shè)置為只讀模式,增加了數(shù)據(jù)的安全性。
- Bind Mount不支持Volume驅(qū)動(dòng)程序,也不支持在遠(yuǎn)程主機(jī)或云提供商上存儲(chǔ)數(shù)據(jù)。
例子
使用Volume的命令可能如下:
docker run -d --name devtest -v myvol2:/app nginx:latest
其中myvol2是Volume的名字,如果Volume不存在,Docker會(huì)自動(dòng)創(chuàng)建它。
使用Bind Mount的命令可能如下:
docker run -d --name devtest -v "$(pwd)"/target:/app nginx:latest
這里$(pwd)代表當(dāng)前工作目錄的絕對(duì)路徑,target是宿主機(jī)上的目錄,/app是容器內(nèi)的掛載點(diǎn)。
總的來說,如果你需要一個(gè)由Docker完全管理的數(shù)據(jù)持久化方案,并且希望在容器間共享數(shù)據(jù),那么Volume是更好的選擇。
如果你需要更細(xì)粒度的控制,或者希望容器能夠訪問宿主機(jī)上的特定文件或目錄,那么Bind Mount可能更適合你的需求。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker Hub運(yùn)行原理及實(shí)現(xiàn)過程解析
這篇文章主要介紹了Docker Hub運(yùn)行原理及實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Docker案例分析:搭建MySQL數(shù)據(jù)庫服務(wù)
這篇文章主要介紹了Docker案例分析:搭建MySQL數(shù)據(jù)庫服務(wù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
在Centos7 中更改Docker默認(rèn)鏡像和容器的位置
這篇文章主要介紹了在Centos7 下更改Docker默認(rèn)鏡像和容器的位置,需要的朋友可以參考下2017-05-05
docker?Desktop安裝WSL?--update報(bào)錯(cuò)問題成功解決辦法
這篇文章主要介紹了如何在Windows?11上設(shè)置WSL2為默認(rèn)版本,解決WSL2安裝和卸載過程中遇到的問題,包括強(qiáng)制中斷命令、wsl--uninstall命令無效以及手動(dòng)刪除Linux發(fā)行版的方法,需要的朋友可以參考下2025-02-02
Docker服務(wù)的重啟服務(wù)命令詳解(systemctl restart docker)
這篇文章主要介紹了Docker服務(wù)的重啟服務(wù)命令(systemctl restart docker),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
如何在 Ubuntu 下通過 Docker 部署 Caddy 
本文介紹了如何在Ubuntu系統(tǒng)下通過Docker部署Caddy服務(wù)器,首先安裝Docker,然后啟動(dòng)Docker服務(wù)并設(shè)置為開機(jī)自啟,接著拉取Caddy鏡像,并創(chuàng)建一個(gè)Caddyfile配置文件,使用命令運(yùn)行Caddy容器,并將本地的Caddyfile掛載到容器內(nèi),感興趣的朋友跟隨小編一起看看吧2025-03-03

