首先祝大齡兒童們節(jié)日快樂,永遠(yuǎn)保持一顆童心。
本篇實(shí)踐記錄和前篇 部署MySQL服務(wù) 類似,我們權(quán)當(dāng)練手熟悉。在我工作中,我們的生產(chǎn)環(huán)境是使用的阿里云的云數(shù)據(jù)庫Redis版,其好處不言而喻。在開發(fā)或測(cè)試環(huán)境我們可以自己搭建Redis服務(wù),接著我們將基于Docker來部署一個(gè)Redis服務(wù)。
一、下載鏡像
我們使用官方提供的最新穩(wěn)定版5.0.4的alpine鏡像,一般如果官方鏡像提供了alpine版本的話我們則盡量使用此種類型版本,相比于其他Docker鏡像,它占用的體積更小。
$ docker pull redis:5.0.4-alpine
我們下載一下默認(rèn)的latest版本鏡像來進(jìn)行比較一下體積大小
$ docker pull redis
使用如下命令列出redis鏡像,可以看見SIZE的比較,大概相差了1倍。
$ docker image ls redis
接下來我們還是刪除latest版本
$ docker image rm redis
然后按照慣例查看一下鏡像詳細(xì)信息
$ docker image inspect redis:5.0.4-alpine
部分截圖內(nèi)容如下
通過inspect命令可以大致了解到該鏡像暴露的端口以及環(huán)境變量和數(shù)據(jù)卷目錄等信息,一般通過Docker Hub上搜索到官方鏡像后,可以點(diǎn)擊到你選擇的版本對(duì)應(yīng)的Dockerfile鏈接去,然后可以查看到更詳細(xì)的鏡像制作細(xì)節(jié)
二、啟動(dòng)Redis服務(wù)實(shí)例
2.1 數(shù)據(jù)持久目錄創(chuàng)建
Redis通過RDB和AOF兩種方式來進(jìn)行數(shù)據(jù)的持久化, 這里我們先創(chuàng)建一個(gè)主機(jī)目錄作為持久化目錄進(jìn)行數(shù)據(jù)掛載
$ mkdir -p /docker_volume/redis/data
更多信息可閱讀官網(wǎng)文檔 https://redis.io/topics/persistence
2.1 啟動(dòng)容器
接下來我們通過docker命令啟動(dòng)我們的Redis容器,我們就簡(jiǎn)單的映射6379端口到主機(jī)的30040端口,把容器內(nèi)的/data目錄掛載到我們上面建好的/docker_volume/redis/data目錄,然后把a(bǔ)ppendonly設(shè)為yes
$ docker run -d --restart=unless-stopped -p 30040:6379 \
-v /docker_volume/redis/data:/data \
--name redis redis:5.0.4-alpine redis-server --appendonly yes
當(dāng)然,如果你需要使用自定義配置的話,還可以掛載自定義配置文件到容器內(nèi)的/usr/local/etc/redis/redis.conf,如下
$ docker run -d --restart=unless-stopped -p 30040:6379 \
-v /docker_volume/redis/data:/data \
-v /docker_volume/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--name redis redis:5.0.4-alpine redis-server /usr/local/etc/redis/redis.conf
當(dāng)然,需要你自己創(chuàng)建 /docker_volume/redis/conf/redis.conf 這么一個(gè)配置文件。
2.2 Rancher中部署Redis服務(wù)
接下來我們通過Rancher來部署Redis服務(wù),先刪除剛才啟動(dòng)的容器
$ docker container stop redis && docker container rm redis
訪問 https://192.168.225.129 進(jìn)入Rancher的UI中部署工作負(fù)載,按照我們前面啟動(dòng)容器執(zhí)行的命令來映射到UI對(duì)應(yīng)的操作上即可,大致操作如下:
最后點(diǎn)擊啟動(dòng)即可,啟動(dòng)成功后會(huì)在我們的掛載目錄生成一個(gè)appendonly.aof文件
三、客戶端連接實(shí)例
我們?cè)诒镜刂鳈C(jī)通過客戶端工具RedisDesktopManager來連接到我們剛才啟動(dòng)的Redis服務(wù)實(shí)例
接著我們來添加一個(gè)KV進(jìn)行測(cè)試,選中db0,鼠標(biāo)右鍵點(diǎn)擊Add New Key,然后在彈出框輸入key與value并保存
為了驗(yàn)證數(shù)據(jù)是否已經(jīng)持久化,我們查看一下appendonly.aof,執(zhí)行如下命令
$ cat appendonly.aof
四、使用小結(jié)
本篇實(shí)踐記錄我們演示了怎么通過容器部署Redis服務(wù)以及使用客戶端工具連接到Redis服務(wù)上,與前一篇部署MySQL服務(wù)差不多類似,都是有狀態(tài)的服務(wù)。在生產(chǎn)環(huán)境中還是建議采用云數(shù)據(jù)庫的Redis版,或者自建高可用服務(wù)。當(dāng)我們遇到有狀態(tài)的服務(wù)時(shí),對(duì)狀態(tài)的持久化不僅僅只映射一個(gè)主機(jī)目錄這么簡(jiǎn)單,還要更多的結(jié)合實(shí)際綜合考慮,選擇合適的存儲(chǔ)方式。當(dāng)然,在單機(jī)環(huán)境或只做演示等倒也無傷大雅。如果你有什么疑問或者文中有什么錯(cuò)誤的地方,歡迎在留言區(qū)留言。
前文導(dǎo)航
Docker決戰(zhàn)到底(一) 虛擬機(jī)中安裝ubuntu系統(tǒng)
Docker決戰(zhàn)到底(二) Docker環(huán)境搭建
Docker決戰(zhàn)到底(三) Rancher2.x的安裝與使用
Docker決戰(zhàn)到底(四) Jenkins的安裝與使用
Docker決戰(zhàn)到底(五) 制作自己的Jenkins鏡像
Docker決戰(zhàn)到底(六) 制作自己的Maven鏡像
Docker決戰(zhàn)到底(七) 使用多階段構(gòu)建Spring Boot應(yīng)用鏡像
Docker決戰(zhàn)到底(八) 自己動(dòng)手搭建GitLab服務(wù)
Docker決戰(zhàn)到底(九) 部署MySQL服務(wù)
Docker決戰(zhàn)到底系列全為本人wendell_dev原創(chuàng),轉(zhuǎn)載請(qǐng)注明來源。