docker下的 redis 之持久化存儲(chǔ)詳解
本章節(jié)開(kāi)始 我們?cè)赿ocker下 進(jìn)行 spring Boot項(xiàng)目操作redis
準(zhǔn)備工作:
(1) 創(chuàng)建文件夾:usr/local/work/share
(2) 拉取項(xiàng)目,這是一個(gè)打包好的jar包
(3) 將拉取的 jar包放到剛剛創(chuàng)建的文件夾下,同時(shí)再創(chuàng)建一個(gè)名字為 docker-compose.yml的文件
(4) 在 tmp目錄中創(chuàng)建一個(gè) data 文件夾
(5) 并在 docker-compose.yml文件中寫入以下內(nèi)容:
redis: image: redis:3 ports: - "6379:6379" volumes: - /tmp/data:/data - java: image: bolingcavalry/springbootrun:0.0.1 links: - redis:redishost volumes: - /usr/local/work/share:/usr/Downloads ports: - "8080:8080" tty: true
這里我們只對(duì) volumes 進(jìn)行講解,簡(jiǎn)單明了的說(shuō)就是: docker 中 redis 容器存儲(chǔ)的數(shù)據(jù)進(jìn)行持久化到本地目錄
官方說(shuō)法:
Redis端口6379已經(jīng)由Redis預(yù)先配置好,從容器中暴露給主機(jī),在docker-compose.yml文件中,將它從主機(jī)暴露給外部,這樣就可以為任何節(jié)點(diǎn)到Redis桌面管理器中,并管理這個(gè)Redis實(shí)例。 最重要的是,redis規(guī)范中有幾件事情使數(shù)據(jù)在這個(gè)堆棧的部署之間持續(xù)存在:redis總是在管理器上運(yùn)行,所以它總是使用相同的文件系統(tǒng);redis在主機(jī)的文件系統(tǒng)中訪問(wèn)一個(gè)任意目錄作為容器內(nèi)部的/data,這是Redis存儲(chǔ)數(shù)據(jù)的地方。
總之,這是在Redis數(shù)據(jù)的主機(jī)物理文件系統(tǒng)中創(chuàng)建“真實(shí)來(lái)源”。如果沒(méi)有這個(gè),Redis將把它的數(shù)據(jù)存儲(chǔ)在容器文件系統(tǒng)中的/data中,如果這個(gè)容器被重新部署的話,這些數(shù)據(jù)將被清除。 這個(gè)真實(shí)來(lái)源有兩個(gè)組成部分:placement在Redis服務(wù)上的placement約束,確保它始終使用相同的主機(jī);創(chuàng)建的volumes允許容器作為/data(在Redis容器內(nèi))訪問(wèn)/data(在主機(jī)上),在容器來(lái)來(lái)去去的時(shí)候,存儲(chǔ)在指定主機(jī)上的/data文件將會(huì)持續(xù)存在,從而保持連續(xù)性。
二.啟動(dòng)容器
將上面的內(nèi)容寫到docker-compose.yml之后,在此文件所在目錄執(zhí)行命令docker-compose up -d,即可啟動(dòng)兩個(gè)容器,再執(zhí)行docker ps可以看到容器信息如下:
jar包下載下來(lái)后,放入本機(jī)的/usr/local/work/share目錄,這個(gè)目錄和容器的/usr/Downloads是映射關(guān)系,所以我們進(jìn)入容器后可以直接訪問(wèn)這個(gè)文件;
三,部署jar包
執(zhí)行以下命令進(jìn)入運(yùn)行springboot容器:
docker exec -it share_java_1 /bin/bash
進(jìn)入/usr/Downloads目錄,可以看到文件:
redistempletedemo-0.0.1-SNAPSHOT.jar
執(zhí)行以下命令啟動(dòng)容器:
java -jar redistempletedemo-0.0.1-SNAPSHOT.jar
啟動(dòng)成功,信息如下:
本地測(cè)試
執(zhí)行
http://localhost:8080/set/name/hxy
執(zhí)行
http://localhost:8080/get/name
我們?cè)俚巧蟫edis容器去檢查一下,執(zhí)行以下命令進(jìn)入redis容器:
docker exec -it share_redis_1 /bin/bash
redis-cli
在控制臺(tái)執(zhí)行g(shù)et name即可看到name對(duì)應(yīng)的值,如下所示:
簡(jiǎn)單的測(cè)試已經(jīng)成功,上面我們也說(shuō)到只要 redis 的容器關(guān)閉所有的數(shù)據(jù)將全部消失,但是我們?cè)谏厦娴膁ocker-compose.yml中配置了
volumes: - /tmp/data:/data
這就說(shuō)明剛剛保存的數(shù)據(jù)持久化到了本地 tmp/data目錄下.打開(kāi) tmp/data會(huì)發(fā)現(xiàn)一個(gè)名字叫dump.rdb的文件
用終端打開(kāi)它輸入命令: vi dump.rdb 就會(huì)看到你剛剛保存的數(shù)據(jù)name:hxy
到此 dcoker下redis 的持久化就說(shuō)到這里,如果有更好的方式請(qǐng)多指教.感謝你看到這里。
相關(guān)項(xiàng)目: https://github.com/haoxiaoyong1014/springboot-examples/tree/master/springboot-redis-docker
補(bǔ)充知識(shí):Docker 下安裝 Redis 啟動(dòng)并設(shè)置密碼、開(kāi)啟持久化
拉取鏡像
docker pull redis:5.0
啟動(dòng)并設(shè)置密碼、開(kāi)啟持久化
docker run -d --name redis-server -p 6379:6379 redis:5.0 --requirepass "mypassword" --appendonly yes
以上這篇docker下的 redis 之持久化存儲(chǔ)詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker部署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-07在Docker中如何配置網(wǎng)絡(luò)并訪問(wèn)互聯(lián)網(wǎng)
這篇文章主要介紹了在Docker中如何配置網(wǎng)絡(luò)并訪問(wèn)互聯(lián)網(wǎng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式
這篇文章主要介紹了Docker搭建并啟動(dòng)Logstash的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08docker部署redis報(bào)錯(cuò)內(nèi)存分配過(guò)度解決辦法
Docker很適合用于測(cè)試發(fā)布,將Docker封裝后可以直接提供給測(cè)試人員進(jìn)行運(yùn)行,不再需要測(cè)試人員與運(yùn)維、開(kāi)發(fā)進(jìn)行配合,進(jìn)行環(huán)境搭建與部署,這篇文章主要給大家介紹了關(guān)于docker部署redis報(bào)錯(cuò)內(nèi)存分配過(guò)度的解決辦法,需要的朋友可以參考下2023-11-11docker-swarm教程之安全保護(hù)加密數(shù)據(jù)的方法詳解
默認(rèn)情況下,集群管理器使用的raft 算法的日志在磁盤上加密,這種靜態(tài)加密可保護(hù)服務(wù)配置和數(shù)據(jù)免受訪問(wèn)加密Raft日志的攻擊者的攻擊,因此引入了Docker secret功能,來(lái)保證加密文件的安全,本文將給大家詳細(xì)的介紹一下如何安全的保護(hù)加密數(shù)據(jù)2023-08-08一文教會(huì)你用Docker打包Python運(yùn)行環(huán)境
Docker提供了容器級(jí)別的資源隔離,由于Python的外部依賴管理中存在的問(wèn)題,我們通常會(huì)使用virtualenv來(lái)對(duì)不同的項(xiàng)目創(chuàng)建其唯一的依賴環(huán)境,下面這篇文章主要給大家介紹了如何通過(guò)一篇文章教會(huì)你用Docker打包Python運(yùn)行環(huán)境的相關(guān)資料,需要的朋友可以參考下2022-05-05docker發(fā)布sunnyNgrok實(shí)現(xiàn)內(nèi)外網(wǎng)穿透的方法(容器內(nèi)執(zhí)行命令)
這篇文章主要介紹了docker上發(fā)布 sunnyNgrok 實(shí)現(xiàn)內(nèi)外網(wǎng)穿透,容器內(nèi)執(zhí)行命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了MacOS使用Docker創(chuàng)建MySQL主從數(shù)據(jù)庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12Docker部署Django+Mysql+Redis+Gunicorn+Nginx的實(shí)現(xiàn)
這篇文章主要介紹了Docker 部署 Django+Mysql+Redis+Gunicorn+Nginx,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Docker部署前后端分離項(xiàng)目的實(shí)現(xiàn)示例
本文主要介紹了Docker部署前后端分離項(xiàng)目的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11