網(wǎng)站首頁 編程語言 正文
Redis是一種內(nèi)存鍵值存儲,可以保存高性能的抽象數(shù)據(jù)結(jié)構(gòu)。開源軟件通常用于數(shù)據(jù)庫、消息傳遞和緩存功能。
Docker 是將應(yīng)用程序打包到容器中的領(lǐng)先工具包。它允許您將軟件組件隔離到具有自己的文件系統(tǒng)的獨立環(huán)境中。
在本指南中,我們將使用 Docker 使用Docker Hub 上的官方鏡像快速部署 Redis 。與裸機安裝相比,Docker 實現(xiàn)了更簡單的設(shè)置過程,并且不會用新包污染您的主機。在繼續(xù)之前,請確保您的主機上安裝了正常運行的 Docker。
入門
Redis 鏡像包括服務(wù)器組件和官方 CLI。它已預(yù)先配置為在您啟動新容器時使用運行的默認(rèn)配置值啟動服務(wù)器。
映像的變體可用于覆蓋不同的 Redis 版本(5.0 和 6.0)和操作系統(tǒng)(Alpine 和 Debian)。瀏覽標(biāo)簽列表以找到適合您環(huán)境的最佳選項。
最簡單的部署如下:
docker run --name redis -d -p 6379:6379 redis:6.0
這將啟動一個名為redisrunning Redis 6.0的新容器。該-d標(biāo)志用于從容器中分離。服務(wù)器將一直在后臺運行,直到您使用docker stop redis.
Redis 默認(rèn)監(jiān)聽 6379 端口。該-p標(biāo)志將此端口綁定到您的主機。您的應(yīng)用程序?qū)⒛軌蛟L問 Redis localhost:6379。請注意,這是不安全的——如果您的機器暴露在互聯(lián)網(wǎng)上,任何人都可以訪問您的 Redis 數(shù)據(jù)!
數(shù)據(jù)存儲
Redis 支持多種持久性機制,可以將您的內(nèi)存數(shù)據(jù)庫保存到磁盤。數(shù)據(jù)將保存到/data容器中的目錄中。由于 Docker 容器是臨時的,您需要將卷掛載到此目錄。否則,當(dāng)您的容器停止時,您的數(shù)據(jù)將丟失。
docker run --name redis -d \ -v redis-data:/data redis:6.0 --save 60 1
該–save標(biāo)志被傳遞到 Redis 服務(wù)器。它配置要使用的持久性策略。此示例每秒鐘寫入一次數(shù)據(jù)庫快照60。除非1自上次快照后發(fā)生數(shù)據(jù)庫寫入,否則將跳過該操作。
一個被調(diào)用的 Docker 卷redis-data由該-v標(biāo)志創(chuàng)建。這會將您的數(shù)據(jù)存儲在容器外,以便在重新啟動后仍可訪問。該卷將一直存在,直到通過運行將其刪除docker volumes rm redis-data。
配置您的服務(wù)器
添加配置參數(shù)的最快方法是將 CLI 參數(shù)作為docker run命令的一部分傳遞給 Redis 服務(wù)器。–save上面的例子說明了這一點。圖像名稱 in 之后的任何內(nèi)容docker run都將傳遞給在容器內(nèi)執(zhí)行的命令。對于 Redis 映像,該命令是 Redis 服務(wù)器。
使用 CLI 標(biāo)志很快就會變得重復(fù)。您可以通過將路徑作為服務(wù)器的第一個參數(shù)傳遞來使 Redis使用配置文件。該文件通常位于/usr/local/etc/redis/redis.conf. 使用 Docker 綁定安裝redis.conf從安裝到容器的本地文件系統(tǒng)獲取:
docker run --name redis -d \ -v redis-data:/data -v ./redis-conf:/usr/local/etc/redis redis:6.0 /usr/local/etc/redis.conf
在您的工作目錄中放置一個redis.confinside redis-conf。Docker 會將此路徑掛載到容器中,讓 Redis 可以訪問docker run命令中指定的文件。
管理Redis安全
默認(rèn)情況下,Redis Docker 映像配置為在不受保護的模式下運行 Redis。這使得使用 Docker 網(wǎng)絡(luò)從其他 Docker 容器訪問 Redis 服務(wù)器變得更加容易。但是,這也意味著可以到達您的容器的任何東西都可以完全訪問您的數(shù)據(jù)。
保護模式是Redis 的一項功能,它僅響應(yīng)從主機的環(huán)回地址發(fā)出的未經(jīng)身份驗證的查詢,例如localhost. 您可以通過添加protected-mode yes到您的redis.conf. 當(dāng)與 Dockerized 安裝一起使用時,這將導(dǎo)致 Redis 只能在其自己的容器內(nèi)訪問,這通常并不理想。
您可以通過添加requirepass example到您的redis.conf. Redis 將只接受來自提供配置密碼的客戶端的查詢。Redis 6 還支持功能更齊全的訪問控制,讓您可以設(shè)置具有不同權(quán)限的多個用戶帳戶。
要使用身份驗證,請按照上一節(jié)中的指導(dǎo)創(chuàng)建 Redis 配置文件并將其掛載到您的容器中。如果您不想設(shè)置密碼,只需將其加入應(yīng)用程序所需的 Docker 網(wǎng)絡(luò),即可確保您的安裝安全。不要在沒有先設(shè)置身份驗證的情況下將端口 6379 綁定到您的主機。
使用您的 Redis 安裝
現(xiàn)在 Redis 已完全設(shè)置,您可以繼續(xù)從客戶端訪問它。如果您從主機連接,則可以使用 Docker 容器的 IP(通過運行可見docker inspect redis,根據(jù)容器名稱進行調(diào)整)和端口6379。
要從另一個 Docker 容器訪問 Redis,最好將兩個容器都加入一個 Docker 網(wǎng)絡(luò):
docker network create redis docker run --name redis --network redis -d redis:6.0 docker run --name api --network redis -d my-api:latest
現(xiàn)在,您的應(yīng)用程序容器將能夠通過redis主機名上的端口 6379 訪問 Redis 。當(dāng)它們共享一個 Docker 網(wǎng)絡(luò)時,Docker 使容器名稱可以作為主機名訪問。
您可以使用redis-cli容器映像中包含的二進制文件手動與數(shù)據(jù)庫交互。以分離模式 ( -d)啟動您的容器,使其在后臺運行。然后使用docker exec運行redis-cli命令:
docker exec -it redis-container redis-cli
這將使您進入容器內(nèi)的 Redis CLI 會話。
概括
Docker 可以讓您快速輕松地啟動新的 Redis 實例,而無需將軟件安裝到您的機器上。使用官方 Docker 鏡像啟動你的容器,然后添加命令標(biāo)志或掛載一個配置文件以滿足你的需要。
需要始終牢記的兩件事是存儲和安全性:如果您需要使用 Redis 持久性功能,則應(yīng)該使用 Docker 卷以避免丟失數(shù)據(jù)。請記住,Dockerized Redis 默認(rèn)為無保護模式且無需身份驗證,因此在最壞的情況下,暴露 6379 端口可能會產(chǎn)生災(zāi)難性的后果。
原文鏈接:https://blog.csdn.net/wlcs_6305/article/details/122092205
相關(guān)推薦
- 2022-03-29 C++初階學(xué)習(xí)之模板進階_C 語言
- 2022-07-12 windows版wsl docker desktop 安裝nginx
- 2023-06-18 聚星C#數(shù)字信號處理工具包頻譜分析的用法_C#教程
- 2021-12-12 c++虛函數(shù)與虛函數(shù)表原理_C 語言
- 2022-06-13 Python數(shù)據(jù)類型及常用方法_python
- 2022-11-01 Flaks基礎(chǔ)之在URL中添加變量的實現(xiàn)詳解_python
- 2022-12-01 Golang打印復(fù)雜結(jié)構(gòu)體兩種方法詳解_Golang
- 2022-07-26 Python文件處理、os模塊、glob模塊_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支