Docker卷掛載與綁定掛載的區(qū)別小結(jié)
前言
我最開始接觸 Docker 的時(shí)候,遇到 mysql 這樣的容器,我一般使用卷掛載。它的好處就是將掛載的位置交給 Docker 管理,我們規(guī)定卷的名字即可,不需要關(guān)心掛載的位置。我感覺這樣很方便,所以后面我基本一遇到掛載就用卷掛載。
但是最近,我慢慢地開始喜歡上綁定掛載了。特別是要部署一個(gè)什么環(huán)境之類的【如 n8n、redis】,都會(huì)優(yōu)先使用綁定掛載。這個(gè)掛載方式會(huì)讓我更有一種掌控感。
今天就來總結(jié)這兩種掛載方式的相關(guān)知識(shí)。
正文
一、什么是 Docker 數(shù)據(jù)掛載?
在 Docker 中,數(shù)據(jù)掛載就是將宿主機(jī)(你的電腦)的目錄或文件與容器內(nèi)部的目錄或文件進(jìn)行關(guān)聯(lián)。
這樣做的目的是為了持久化保存數(shù)據(jù),即使容器被刪除,數(shù)據(jù)也不會(huì)丟失。
兩種掛載方式
1. 卷掛載(Volume Mount)
卷掛載是 Docker 推薦的數(shù)據(jù)持久化方式。Docker 會(huì)在宿主機(jī)上創(chuàng)建一個(gè)特定的目錄來管理這些卷,我們只需要指定卷的名稱即可。
優(yōu)點(diǎn):
- 由 Docker 統(tǒng)一管理,位置固定
- 備份和遷移比較方便
- 適合生產(chǎn)環(huán)境使用
docker-compose 示例:
services:
mysql:
image: mysql:8.0
volumes:
- mysql_data:/var/lib/mysql # 注意,直接寫名稱,mysql_data的前面沒有./
environment:
MYSQL_ROOT_PASSWORD: changeme
volumes:
mysql_data:
2. 綁定掛載(Bind Mount)
綁定掛載是將宿主機(jī)上的任意目錄直接映射到容器中。你可以完全控制數(shù)據(jù)存儲(chǔ)的位置。
優(yōu)點(diǎn):
- 直觀明了,知道數(shù)據(jù)具體存在哪里
- 方便開發(fā)和調(diào)試,修改文件立即生效
- 適合開發(fā)環(huán)境使用
docker-compose 示例:
version: '3.8'
services:
nginx:
image: nginx:alpine
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf # 注意前方有個(gè)./
- ./html:/usr/share/nginx/html # 注意前方有個(gè)./
ports:
- '80:80'
如何選擇?
- 卷掛載:適合數(shù)據(jù)庫、應(yīng)用數(shù)據(jù)等不需要經(jīng)?!臼謩?dòng)修改】的內(nèi)容
- 綁定掛載:適合配置文件、代碼文件等需要頻繁修改的內(nèi)容
最后
兩種掛載方式各有優(yōu)勢,選擇哪種主要取決于你的使用場景:
- 想要簡單省心,讓 Docker 管理數(shù)據(jù)位置 → 選擇卷掛載
- 想要完全掌控,知道數(shù)據(jù)具體在哪里 → 選擇綁定掛載
關(guān)于如何選擇的問題,總結(jié)如下:
卷掛載適合數(shù)據(jù)庫、日志等讓 Docker 自動(dòng)管理的場景,你只需起個(gè)名字;
綁定掛載適合代碼、配置等需要【頻繁修改】的文件,你能【直接找到并編輯它們】。
再再再簡單地說:數(shù)據(jù)交給 Docker 管用卷,自己要?jiǎng)邮指木陀媒壎⊕燧d。
到此這篇關(guān)于Docker卷掛載與綁定掛載的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)Docker卷掛載與綁定掛載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker安裝后導(dǎo)致的網(wǎng)絡(luò)問題及解決
這篇文章主要介紹了docker安裝后導(dǎo)致的網(wǎng)絡(luò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
docker的基本使用及使如何用Docker 運(yùn)行D435i
這篇文章主要介紹了docker的基本使用及使如何用Docker 運(yùn)行D435i,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11
docker部署安裝jenkins的實(shí)現(xiàn)步驟
本文主要介紹了docker部署安裝jenkins的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
docker環(huán)境下數(shù)據(jù)庫的備份(postgresql, mysql) 實(shí)例代碼
這篇文章主要介紹了docker環(huán)境下數(shù)據(jù)庫的備份(postgresql, mysql) ,需要的朋友可以參考下2019-05-05
Docker容器搭建并運(yùn)行實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Docker容器搭建并運(yùn)行實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
docker安裝rabbitmq無法進(jìn)入管理頁面的問題
這篇文章主要介紹了docker安裝rabbitmq無法進(jìn)入管理頁面的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

