解決docker重啟redis,mysql數(shù)據(jù)丟失的問(wèn)題
官方文檔:
所以 mysql應(yīng)如下啟動(dòng):
docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=密碼 -v /windows盤符/指定的文件夾路徑:/var/lib/mysql mysql:5.7
redis:
docker run -p 6379:6379 -d -v /windows盤符/指定的文件夾路徑:/data redis:5.0 redis-server --appendonly yes
多看官方文檔,里面有詳細(xì)的說(shuō)明
補(bǔ)充知識(shí):docker 掛載進(jìn)容器的文件修改后沒(méi)有改變需要重啟
今天發(fā)現(xiàn)一個(gè)很奇怪的現(xiàn)象,就是我在宿主機(jī)上的文件掛載進(jìn)docker后,主機(jī)上刪除了文件,并且重新上傳重命名為相同名字的文件,容器中的沒(méi)有同步.
先來(lái)說(shuō)下Linux,Linux存儲(chǔ)是分為iNode和block的,iNode存儲(chǔ)的是文件的屬行信息,例如大小,在磁盤的什么位置,block是4k大小的一個(gè)塊,存儲(chǔ)的是文件的實(shí)際信息,不足4k大小的文件也會(huì)占用掉4k的空間.
了解了上面,再來(lái)說(shuō)docker,掛載進(jìn)docker的文件,實(shí)際上是docker記住了一個(gè)iNode,他可以通過(guò)這個(gè)iNode找到block,也就是實(shí)際的文件信息.如果是用 > 追加重定向?qū)懭胛募?是可以同步到docker的,但是如果是rm 重命名的,文件的iNode就改變了,但是docker中的iNode還是指向了之前的磁盤位置,所以文件沒(méi)有改變.
rm 原理:rm只是刪除了iNode,沒(méi)有了iNode通過(guò)正常方式,找不到磁盤上的block,看起來(lái)就是刪除了,但是文件信息還在,文件信息會(huì)在下次寫入到這里的時(shí)候覆蓋掉,所以數(shù)據(jù)被刪除還有恢復(fù)的方法,但是,如果刪除的時(shí)候文件是打開的,文件也不會(huì)被刪除
同樣的還有vim ,vim 文件的時(shí)候,是基于現(xiàn)有的文件copy了一份,同級(jí)目錄下會(huì)有一個(gè) .開頭swp結(jié)尾的文件,當(dāng)你保存退出的時(shí)候,vim 會(huì)刪掉源文件,將這個(gè)文件重命名為源文件的名字,iNode自然也就改變了.
以上這篇解決docker重啟redis,mysql數(shù)據(jù)丟失的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker在WSL環(huán)境下啟動(dòng)失敗的問(wèn)題解決辦法
在Windows系統(tǒng)上,有時(shí)候我們可能會(huì)遇到Docker啟動(dòng)失敗的問(wèn)題,特別是在使用WSL(Windows Subsystem for Linux)作為Docker運(yùn)行環(huán)境時(shí),這篇文章主要介紹了Docker在WSL環(huán)境下啟動(dòng)失敗問(wèn)題的解決辦法,需要的朋友可以參考下2025-07-07國(guó)內(nèi)可用的Docker鏡像源測(cè)試指南
在使用 Docker 時(shí),由于網(wǎng)絡(luò)原因,直接從 Docker Hub 拉取鏡像可能會(huì)遇到速度緩慢甚至無(wú)法訪問(wèn)的情況,因此,使用國(guó)內(nèi)的 Docker 鏡像源可以顯著提升鏡像拉取速度,本文將介紹如何選擇和測(cè)試國(guó)內(nèi)可用的 Docker 鏡像源,需要的朋友可以參考下2025-02-02centos7使用yum實(shí)現(xiàn)快速安裝Docker環(huán)境
這篇文章主要為大家詳細(xì)介紹了centos7使用yum實(shí)現(xiàn)快速安裝Docker環(huán)境的詳細(xì)教程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04Docker部署Mysql數(shù)據(jù)庫(kù)步驟詳解
Docker是一種流行的容器化平臺(tái),可以簡(jiǎn)化應(yīng)用程序的部署和管理,在本博客中,我們將探討如何使用Docker部署兩個(gè)廣泛使用的數(shù)據(jù)庫(kù):MySQL,我們將提供詳細(xì)的步驟和相應(yīng)的命令,以幫助您輕松地在Docker容器中設(shè)置和運(yùn)行這個(gè)數(shù)據(jù)庫(kù)2023-07-07Docker安裝部署neo4j的實(shí)戰(zhàn)過(guò)程
Docker是一種容器化技術(shù),可以在Linux系統(tǒng)上部署應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于Docker安裝部署neo4j的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05詳解Dockerfile創(chuàng)建自定義Docker鏡像以及CMD與ENTRYPOINT指令的比較
這篇文章主要介紹了詳解Dockerfile創(chuàng)建自定義Docker鏡像以及CMD與ENTRYPOINT指令的比較,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11詳解使用阿里云鏡像倉(cāng)庫(kù)構(gòu)建國(guó)外Docker鏡像
這篇文章主要介紹了詳解使用阿里云鏡像倉(cāng)庫(kù)構(gòu)建國(guó)外Docker鏡像,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11如何使用docker?compose部署dify(大模型開發(fā)使用平臺(tái))
Dify是一款生成式AI應(yīng)用中間件,面向有私有部署與數(shù)據(jù)合規(guī)需求的企業(yè)用戶,推動(dòng)企業(yè)向AI+時(shí)代轉(zhuǎn)型,這篇文章主要介紹了使用docker compose部署dify(大模型開發(fā)使用平臺(tái)),需要的朋友可以參考下2025-05-05