Docker卷掛載與綁定掛載的區(qū)別小結(jié)
前言
我最開始接觸 Docker 的時(shí)候,遇到 mysql 這樣的容器,我一般使用卷掛載。它的好處就是將掛載的位置交給 Docker 管理,我們規(guī)定卷的名字即可,不需要關(guān)心掛載的位置。我感覺這樣很方便,所以后面我基本一遇到掛載就用卷掛載。
但是最近,我慢慢地開始喜歡上綁定掛載了。特別是要部署一個(gè)什么環(huán)境之類的【如 n8n、redis】,都會(huì)優(yōu)先使用綁定掛載。這個(gè)掛載方式會(huì)讓我更有一種掌控感。
今天就來(lái)總結(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è)特定的目錄來(lái)管理這些卷,我們只需要指定卷的名稱即可。
優(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ù)庫(kù)、應(yīng)用數(shù)據(jù)等不需要經(jīng)?!臼謩?dòng)修改】的內(nèi)容
- 綁定掛載:適合配置文件、代碼文件等需要頻繁修改的內(nèi)容
最后
兩種掛載方式各有優(yōu)勢(shì),選擇哪種主要取決于你的使用場(chǎng)景:
- 想要簡(jiǎn)單省心,讓 Docker 管理數(shù)據(jù)位置 → 選擇卷掛載
- 想要完全掌控,知道數(shù)據(jù)具體在哪里 → 選擇綁定掛載
關(guān)于如何選擇的問(wèn)題,總結(jié)如下:
卷掛載適合數(shù)據(jù)庫(kù)、日志等讓 Docker 自動(dòng)管理的場(chǎng)景,你只需起個(gè)名字;
綁定掛載適合代碼、配置等需要【頻繁修改】的文件,你能【直接找到并編輯它們】。
再再再簡(jiǎn)單地說(shuō):數(shù)據(jù)交給 Docker 管用卷,自己要?jiǎng)邮指木陀媒壎⊕燧d。
到此這篇關(guān)于Docker卷掛載與綁定掛載的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)Docker卷掛載與綁定掛載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker compose部署cassandra集群的操作代碼
這篇文章主要介紹了docker compose部署cassandra集群的操作代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03
使用Docker快速搭建Redis主從復(fù)制的完整步驟
在現(xiàn)代應(yīng)用程序中,Redis憑借其高性能和簡(jiǎn)便的數(shù)據(jù)結(jié)構(gòu)被廣泛使用,為了提高數(shù)據(jù)的可用性和可靠性,很多時(shí)候我們需要在Redis中配置主從架構(gòu),這篇文章主要介紹了使用Docker快速搭建Redis主從復(fù)制的完整步驟,需要的朋友可以參考下2026-01-01
查看Docker停止容器占用的內(nèi)存的實(shí)現(xiàn)方法小結(jié)
要查看 Docker 停止的容器占用的內(nèi)存,可以通過(guò)以下幾種方法來(lái)實(shí)現(xiàn),Docker 提供了一些命令和工具來(lái)幫助你管理和監(jiān)控容器的資源使用情況,需要的朋友可以參考下2024-11-11
Docker之阿里云服務(wù)安裝Docker實(shí)踐
這篇文章主要介紹了Docker之阿里云服務(wù)安裝Docker實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03
docker swarm 集群創(chuàng)建過(guò)程
通過(guò)docker swarm 工具將一臺(tái)或者多臺(tái)安裝了docker的服務(wù)器組成一個(gè)完整的集群,該集群中的node節(jié)點(diǎn)可以通過(guò)Leader節(jié)點(diǎn)管理,這篇文章主要介紹了docker swarm 集群創(chuàng)建,需要的朋友可以參考下2024-03-03
Docker Desktop啟動(dòng)后容器自啟動(dòng)關(guān)閉指南
在使用 Docker Desktop 的時(shí)候,有些容器會(huì)在每次啟動(dòng) Docker Desktop 后自動(dòng)啟動(dòng),但是這個(gè)服務(wù)我并不是每次都需要用,所以希望它不要跟隨 Docker Desktop 自動(dòng)啟動(dòng),而是在需要的時(shí)候手動(dòng)啟動(dòng),所以本文給大家介紹了Docker Desktop啟動(dòng)后容器自啟動(dòng)關(guān)閉方法2026-06-06

