最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker數(shù)據(jù)持久化之如何讓新容器同步舊數(shù)據(jù)詳解

 更新時間:2025年10月21日 09:08:50   作者:一勺菠蘿丶  
這篇文章主要為大家詳細介紹了Docker如何讓新容器同步舊數(shù)據(jù),文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考一下

適合人群:剛接觸 Docker 的 Java / 后端開發(fā)者

目標:徹底理解 -v 數(shù)據(jù)卷的作用、數(shù)據(jù)保存機制,以及容器刪除后數(shù)據(jù)為什么不丟

一、Docker 的容器與數(shù)據(jù)之間的關系

我們先來理解一個關鍵概念:

Docker 容器 ≠ 數(shù)據(jù)庫本身。

可以把 Docker 想象成一個“小房子”:

  • 房子里裝著程序(比如 MySQL、Redis);
  • 數(shù)據(jù)(比如數(shù)據(jù)庫表)其實放在房子里面的“儲物柜”里。

當你執(zhí)行:

docker run -di --name mysql8.0 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0

你只是建了個房子(容器),而數(shù)據(jù)默認存在房子里面的 /var/lib/mysql 目錄下。

問題是:

當你把這個容器刪掉時(docker rm -f mysql8.0),房子和里面的數(shù)據(jù)儲物柜都會一起被“炸掉”,數(shù)據(jù)全沒。

二、解決辦法:用-v數(shù)據(jù)卷掛載

Docker 提供了一個“外 掛儲物柜”的功能,叫 數(shù)據(jù)卷(Volume)。

舉個例子:

docker run -di \
  --name=mysql8.0 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -v ~/docker/mysql/data:/var/lib/mysql \
  mysql:8.0

這里的 -v 參數(shù)代表:

Mac宿主機路徑 : 容器內(nèi)部路徑

即:

  • 你的 Mac 上的 ~/docker/mysql/data 文件夾
  • 實際上掛載到了容器里的 /var/lib/mysql

這意味著:

不管容器如何刪、重建,~/docker/mysql/data 的內(nèi)容都不會被刪除,數(shù)據(jù)會一直保留在宿主機上。

三、驗證實驗:刪容器后數(shù)據(jù)還在!

下面我們來做個小實驗:

Step 1. 創(chuàng)建容器

docker run -di \
  --name=mysql8.0 \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -v ~/docker/mysql/data:/var/lib/mysql \
  mysql:8.0

Step 2. 進入容器創(chuàng)建一個數(shù)據(jù)庫

docker exec -it mysql8.0 mysql -uroot -proot
CREATE DATABASE testdb;

Step 3. 刪除容器

docker rm -f mysql8.0

Step 4. 查看宿主機目錄

ls ~/docker/mysql/data

你會看到很多 .ibd、.frm、testdb 文件夾還在。

說明數(shù)據(jù)沒有被刪除!

四、重新創(chuàng)建容器,數(shù)據(jù)還能“復活”!

現(xiàn)在我們重新啟動一個新容器,但繼續(xù)掛載同一個路徑:

docker run -di \
  --name=mysql_new \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=root \
  -v ~/docker/mysql/data:/var/lib/mysql \
  mysql:8.0

然后進入新容器:

docker exec -it mysql_new mysql -uroot -proot
SHOW DATABASES;

你會驚喜地發(fā)現(xiàn) ——上次創(chuàng)建的 testdb 數(shù)據(jù)庫還在!

五、原理解釋:為什么新容器能同步舊數(shù)據(jù)?

這是因為:

  • -v 參數(shù)讓容器內(nèi)部的 /var/lib/mysql 與宿主機的文件夾建立了“實時映射關系”;
  • 容器只是“使用”那里的數(shù)據(jù)文件,并不會直接擁有;
  • 刪除容器只會刪除容器本身的鏡像層,不會影響宿主機的文件。

換句話說:

數(shù)據(jù)卷是“獨立存在的外部存儲”,容器只是臨時使用它。

六、同樣適用于 Redis、Elasticsearch 等服務

服務掛載命令容器內(nèi)默認路徑推薦宿主機路徑
MySQL-v ~/docker/mysql/data:/var/lib/mysql/var/lib/mysql~/docker/mysql/data
Redis-v ~/docker/redis/data:/data/data~/docker/redis/data
Elasticsearch-v ~/docker/es/data:/usr/share/elasticsearch/data/usr/share/elasticsearch/data~/docker/es/data
Jenkins-v ~/docker/jenkins:/var/jenkins_home/var/jenkins_home~/docker/jenkins
MinIO-v ~/docker/minio/data:/data/data~/docker/minio/data

這些路徑同理:只要掛載過,再建容器掛載相同路徑 → 數(shù)據(jù)自然“同步回來”。

七、額外提示:查看掛載信息

想看某個容器的掛載狀態(tài):

docker inspect 容器名 | grep Mounts -A 10

可以看到類似:

"Mounts": [
    {
        "Type": "bind",
        "Source": "/Users/yourname/docker/mysql/data",
        "Destination": "/var/lib/mysql"
    }
]

這就說明你的數(shù)據(jù)卷掛載成功。

八、小白總結(jié)一圖流

無 -v 掛載:
[容器]——數(shù)據(jù)放在容器內(nèi)(刪容器=刪數(shù)據(jù))

有 -v 掛載:
[容器]←→[宿主機文件夾](刪容器≠刪數(shù)據(jù))

重新啟動時:

新容器 ←→ [同一個宿主機路徑] → 數(shù)據(jù)自動同步回來 ?

九、日常使用建議

場景建議做法
本地開發(fā)一定要掛載 -v 保存數(shù)據(jù)
測試環(huán)境可選擇性掛載
生產(chǎn)環(huán)境統(tǒng)一放在掛載卷或 NFS 存儲上
容器遷移拷貝宿主機對應路徑即可恢復數(shù)據(jù)

十、總結(jié)一句話

沒有 -v,容器刪了數(shù)據(jù)也沒了;

有了 -v,數(shù)據(jù)存在宿主機目錄中,刪容器也不影響。

只要新容器掛載相同目錄,數(shù)據(jù)就能“原地復活”。

延伸閱讀

Docker 官方文檔:https://docs.docker.com/storage/volumes/

推薦命令:

docker volume ls     # 查看所有數(shù)據(jù)卷
docker volume inspect 卷名
docker system df     # 查看磁盤空間占用

到此這篇關于Docker數(shù)據(jù)持久化之如何讓新容器同步舊數(shù)據(jù)詳解的文章就介紹到這了,更多相關Docker新容器同步舊數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker Compose從安裝到使用詳細過程

    Docker Compose從安裝到使用詳細過程

    Docker Compose是Docker官方提供的一個工具,用于定義和運行多容器 Docker應用程序,本文給大家介紹Docker Compose從安裝到使用詳細過程,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • 在wsl-ubuntu中如何通過 docker 啟動 gpu-jupyter

    在wsl-ubuntu中如何通過 docker 啟動 gpu-jupyter

    這篇文章主要介紹了在wsl-ubuntu中如何通過 docker 啟動 gpu-jupyter,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 詳解docker中Dockerfile指令創(chuàng)建鏡像

    詳解docker中Dockerfile指令創(chuàng)建鏡像

    這篇文章主要介紹了詳解docker中Dockerfile指令創(chuàng)建鏡像,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Docker(黑馬spring?cloud筆記)詳解

    Docker(黑馬spring?cloud筆記)詳解

    這篇文章主要介紹了Docker(黑馬spring?cloud筆記)詳解,本文章內(nèi)容詳細,具有很好的參考價值,希望對大家有所幫助,需要的朋友可以參考下<BR>
    2023-01-01
  • docker打包node項目的過程講解

    docker打包node項目的過程講解

    今天小編就為大家分享一篇關于docker打包node項目的過程講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • IDEA集成Docker實現(xiàn)一鍵部署全過程

    IDEA集成Docker實現(xiàn)一鍵部署全過程

    本文詳細介紹了如何在IntelliJ IDEA中集成Docker并實現(xiàn)一鍵部署代碼的步驟,包括安裝Docker、配置服務器、IDEA配置、添加Dockerfile、運行配置以及一鍵部署
    2024-11-11
  • Docker方式啟動tomcat訪問首頁出現(xiàn)404錯誤

    Docker方式啟動tomcat訪問首頁出現(xiàn)404錯誤

    這篇文章主要介紹了Docker方式啟動tomcat訪問首頁出現(xiàn)404錯誤。文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • docker安裝,yum安裝失敗解決方案,阿里云鏡像安裝過程

    docker安裝,yum安裝失敗解決方案,阿里云鏡像安裝過程

    在配置Yum源遇到問題時,嘗試使用阿里云鏡像可以有效解決,本文詳細介紹了如何配置阿里云源及安裝Docker的步驟,首先,若Yum源配置出錯,建議更換為阿里云鏡像;其次,詳述了安裝Docker的具體命令,包括啟用阿里云源和安裝過程中的選擇提示
    2024-11-11
  • Docker四種網(wǎng)絡模式演示及連通性測試

    Docker四種網(wǎng)絡模式演示及連通性測試

    這篇文章主要為大家介紹了Docker四種網(wǎng)絡模式演示及連通性測試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • docker swarm如何在指定的node上運行指定的容器

    docker swarm如何在指定的node上運行指定的容器

    這篇文章主要介紹了docker swarm如何在指定的node上運行指定的容器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07

最新評論

乌兰察布市| 宁德市| 承德县| 桂东县| 乐清市| 台湾省| 安庆市| 东莞市| 江山市| 南雄市| 蒙城县| 昭觉县| 界首市| 通河县| 海淀区| 宁强县| 澄江县| 繁昌县| 新闻| 林州市| 樟树市| 台江县| 息烽县| 交口县| 南阳市| 犍为县| 漾濞| 霍林郭勒市| 固镇县| 大姚县| 当雄县| 石林| 白沙| 房产| 伊金霍洛旗| 揭阳市| 霞浦县| 德化县| 怀安县| 青海省| 安阳市|