Redis快速部署為Docker容器的實現方法

Redis是一種內存鍵值存儲,可以保存高性能的抽象數據結構。開源軟件通常用於數據庫、消息傳遞和緩存功能。

Docker 是將應用程序打包到容器中的領先工具包。它允許您將軟件組件隔離到具有自己的文件系統的獨立環境中。

在本指南中,我們將使用 Docker 使用Docker Hub 上的官方鏡像快速部署 Redis 。與裸機安裝相比,Docker 實現瞭更簡單的設置過程,並且不會用新包污染您的主機。在繼續之前,請確保您的主機上安裝瞭正常運行的 Docker。

入門

Redis 鏡像包括服務器組件和官方 CLI。它已預先配置為在您啟動新容器時使用運行的默認配置值啟動服務器。

映像的變體可用於覆蓋不同的 Redis 版本(5.0 和 6.0)和操作系統(Alpine 和 Debian)。瀏覽標簽列表以找到適合您環境的最佳選項。

最簡單的部署如下:

docker run --name redis -d -p 6379:6379 redis:6.0

這將啟動一個名為redisrunning Redis 6.0的新容器。該-d標志用於從容器中分離。服務器將一直在後臺運行,直到您使用docker stop redis.

Redis 默認監聽 6379 端口。該-p標志將此端口綁定到您的主機。您的應用程序將能夠訪問 Redis localhost:6379。請註意,這是不安全的——如果您的機器暴露在互聯網上,任何人都可以訪問您的 Redis 數據!

數據存儲

Redis 支持多種持久性機制,可以將您的內存數據庫保存到磁盤。數據將保存到/data容器中的目錄中。由於 Docker 容器是臨時的,您需要將卷掛載到此目錄。否則,當您的容器停止時,您的數據將丟失。

docker run --name redis -d \
    -v redis-data:/data
    redis:6.0 --save 60 1

該–save標志被傳遞到 Redis 服務器。它配置要使用的持久性策略。此示例每秒鐘寫入一次數據庫快照60。除非1自上次快照後發生數據庫寫入,否則將跳過該操作。

一個被調用的 Docker 卷redis-data由該-v標志創建。這會將您的數據存儲在容器外,以便在重新啟動後仍可訪問。該卷將一直存在,直到通過運行將其刪除docker volumes rm redis-data。

配置您的服務器

添加配置參數的最快方法是將 CLI 參數作為docker run命令的一部分傳遞給 Redis 服務器。–save上面的例子說明瞭這一點。圖像名稱 in 之後的任何內容docker run都將傳遞給在容器內執行的命令。對於 Redis 映像,該命令是 Redis 服務器。

使用 CLI 標志很快就會變得重復。您可以通過將路徑作為服務器的第一個參數傳遞來使 Redis使用配置文件。該文件通常位於/usr/local/etc/redis/redis.conf. 使用 Docker 綁定安裝redis.conf從安裝到容器的本地文件系統獲取:

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安全

默認情況下,Redis Docker 映像配置為在不受保護的模式下運行 Redis。這使得使用 Docker 網絡從其他 Docker 容器訪問 Redis 服務器變得更加容易。但是,這也意味著可以到達您的容器的任何東西都可以完全訪問您的數據。

保護模式是Redis 的一項功能,它僅響應從主機的環回地址發出的未經身份驗證的查詢,例如localhost. 您可以通過添加protected-mode yes到您的redis.conf. 當與 Dockerized 安裝一起使用時,這將導致 Redis 隻能在其自己的容器內訪問,這通常並不理想。

您可以通過添加requirepass example到您的redis.conf. Redis 將隻接受來自提供配置密碼的客戶端的查詢。Redis 6 還支持功能更齊全的訪問控制,讓您可以設置具有不同權限的多個用戶帳戶。

要使用身份驗證,請按照上一節中的指導創建 Redis 配置文件並將其掛載到您的容器中。如果您不想設置密碼,隻需將其加入應用程序所需的 Docker 網絡,即可確保您的安裝安全。不要在沒有先設置身份驗證的情況下將端口 6379 綁定到您的主機。

使用您的 Redis 安裝

現在 Redis 已完全設置,您可以繼續從客戶端訪問它。如果您從主機連接,則可以使用 Docker 容器的 IP(通過運行可見docker inspect redis,根據容器名稱進行調整)和端口6379。

要從另一個 Docker 容器訪問 Redis,最好將兩個容器都加入一個 Docker 網絡:

docker network create redis
docker run --name redis --network redis -d redis:6.0
docker run --name api --network redis -d my-api:latest

現在,您的應用程序容器將能夠通過redis主機名上的端口 6379 訪問 Redis 。當它們共享一個 Docker 網絡時,Docker 使容器名稱可以作為主機名訪問。

在這裡插入圖片描述

您可以使用redis-cli容器映像中包含的二進制文件手動與數據庫交互。以分離模式 ( -d)啟動您的容器,使其在後臺運行。然後使用docker exec運行redis-cli命令:

docker exec -it redis-container redis-cli

這將使您進入容器內的 Redis CLI 會話。

概括

Docker 可以讓您快速輕松地啟動新的 Redis 實例,而無需將軟件安裝到您的機器上。使用官方 Docker 鏡像啟動你的容器,然後添加命令標志或掛載一個配置文件以滿足你的需要。

需要始終牢記的兩件事是存儲和安全性:如果您需要使用 Redis 持久性功能,則應該使用 Docker 卷以避免丟失數據。請記住,Dockerized Redis 默認為無保護模式且無需身份驗證,因此在最壞的情況下,暴露 6379 端口可能會產生災難性的後果。

到此這篇關於Redis快速部署為Docker容器的實現方法的文章就介紹到這瞭,更多相關Redis部署為Docker容器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: