1. 程式人生 > >docker下的 redis 之持久化儲存

docker下的 redis 之持久化儲存

本章節開始 我們在docker下 進行 spring Boot專案操作redis
準備工作:
(1) 建立資料夾:usr/local/work/share
(2) 拉取專案,這是一個打包好的jar 包
(3) 將拉取的 jar包放到剛剛建立的資料夾下,同時再建立一個名字為 docker-compose.yml的檔案
這裡寫圖片描述
(4) 在 tmp目錄中建立一個 data 資料夾
(5) 並在 docker-compose.yml檔案中寫入以下內容:

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

這裡我們只對 volumes 進行講解,簡單明瞭的說就是: docker 中 redis 容器儲存的資料進行持久化到本地目錄
.
官方說法: Redis埠6379已經由Redis預先配置好,從容器中暴露給主機,在docker-compose.yml檔案中,將它從主機暴露給外部,這樣就可以為任何節點到Redis桌面管理器中,並管理這個Redis例項。 最重要的是,redis規範中有幾件事情使資料在這個堆疊的部署之間持續存在:redis總是在管理器上執行,所以它總是使用相同的檔案系統;redis在主機的檔案系統中訪問一個任意目錄作為容器內部的/data,這是Redis儲存資料的地方。總之,這是在Redis資料的主機物理檔案系統中建立“真實來源”。如果沒有這個,Redis將把它的資料儲存在容器檔案系統中的/data中,如果這個容器被重新部署的話,這些資料將被清除。 這個真實來源有兩個組成部分:placement在Redis服務上的placement約束,確保它始終使用相同的主機;建立的volumes允許容器作為/data(在Redis容器內)訪問/data(在主機上),在容器來來去去的時候,儲存在指定主機上的/data檔案將會持續存在,從而保持連續性。

二.啟動容器
將上面的內容寫到docker-compose.yml之後,在此檔案所在目錄執行命令docker-compose up -d,即可啟動兩個容器,再執行docker ps可以看到容器資訊如下:
這裡寫圖片描述
jar包下載下來後,放入本機的/usr/local/work/share目錄,這個目錄和容器的/usr/Downloads是對映關係,所以我們進入容器後可以直接訪問這個檔案;
三,部署jar包

  1. 執行以下命令進入執行springboot容器:

    docker exec -it share_java_1 /bin/bash

  2. 進入/usr/Downloads目錄,可以看到檔案:redistempletedemo-0.0.1-SNAPSHOT.jar

  3. 執行以下命令啟動容器:

    java -jar redistempletedemo-0.0.1-SNAPSHOT.jar

    啟動成功,資訊如下:
    這裡寫圖片描述

我們再登上redis容器去檢查一下,執行以下命令進入redis容器:

docker exec -it share_redis_1 /bin/bash
redis-cli

在控制檯執行get name即可看到name對應的值,如下所示:
這裡寫圖片描述

簡單的測試已經成功,上面我們也說到只要 redis 的容器關閉所有的資料將全部消失,但是我們在上面的docker-compose.yml中配置了
volumes:
- /tmp/data:/data

這就說明剛剛儲存的資料持久化到了本地 tmp/data目錄下.開啟 tmp/data會發現一個名字叫dump.rdb的檔案
用終端開啟它輸入命令: vi dump.rdb 就會看到你剛剛儲存的資料name:hxy
到此 dcoker下redis 的持久化就說到這裡,如果有更好的方式請多指教.感謝你看到這裡,希望給個星星