如何以及為什麼要在 Docker 中運行 Redis

已發表: 2023-05-02

Redis 是一個高度可用的內存數據庫。 其磁盤持久性鍵值數據存儲非常適合多種高可用性用途。

另一方面,Docker 是一種用於容器化應用程序和服務、隔離它們的環境並允許它們單獨運行的工具。 您可以將 Docker 用作具有所有必要依賴項、配置、腳本等的應用程序和服務的包管理器。稱為 Dockerfile 的腳本放置在 Docker 容器內,並允許您將容器作為單個實體進行部署。

本文教您如何有效地使用這兩種開源技術。 它還涉及為什麼在 Docker 容器中運行 Redis 集群至關重要,以及與在虛擬機或裸機服務器上運行 Redis 集群相比,這樣做的優勢和好處。

Redis的各種用途

Redis 有幾個優點。 它最受歡迎的用途包括:

  • 分佈式,鍵值數據庫緩存
  • 消息代理
  • 持久對象緩存服務器

此外,Redis 可以支持多種數據類型和結構,使其適合用作應用程序的主要和次要數據庫層。 它還支持列表、流、散列、集合等。

但是,您可以通過將 Redis 容器化來進一步發揮其優勢。

Redis 最好放在容器中! 了解如何有效地使用 Redis 和 Docker 並釋放容器化 Redis 應用程序的優勢 - 所有內容都在這篇文章中️ 點擊推文

Redis 最好放在容器中

Redis 是 Docker 註冊表中最受歡迎的 Docker 映像之一,下載量超過 10 億次。 容器化 Redis 應用程序的原因是為了獲得 Docker 的好處和社區對最常見的 Redis 用例的支持。

Redis Docker 鏡像有一個開源社區,可以創建和維護清晰的文檔。 最重要的是,Docker 非常可靠,易於使用且具有靈活性。

使用方便

Docker 隔離容器內運行的應用程序和服務的環境。 隔離意味著您可以打包、構建和運送 Redis 映像,無論主機操作系統如何,這都可以輕鬆地在 Docker 中開發和運行 Redis 應用程序。 此外,Docker Desktop 簡化了一致的本地開發環境的設置,這對大型團隊特別有用。

安全:

您可以使用容器內的 Redis 掃描安全漏洞。 Docker 使用 Snyk,這是一種提供 Docker 鏡像安全可見性的工具。 它掃描 Docker 容器,並在圖像損壞時提供詳細信息和補救措施。 Docker 還可以生成軟件物料清單 (SBOM),用於掃描構建容器映像時使用的所有依賴項,儘管它仍處於試驗階段。

靈活性

Docker 適用於大多數基於 Unix 和 Windows 的操作系統和應用程序。 由於您使用容器將軟件與其環境隔離開來,以確保它適用於所有系統,因此 Redis 應用程序和服務始終可以在基礎架構下運行。

可靠性

Docker 允許您在任何環境中可靠地運行任何容器化工作負載。 Redis 在 Docker 中是可靠的,因為 Docker 容器會定期拍攝容器映像的快照,允許您在數據庫損壞或損壞的情況下恢復到這些快照。 您還可以通過在容器內掛載包含 Redis 數據庫文件的目錄來創建 Docker 卷。

Docker 卷有助於保護容器免受任何形式的意外數據丟失。 但是,需要注意的是 Docker 卷不包含映像快照。 您必須定期手動保存或備份 Redis 數據庫文件中的數據。

如何在 Docker 中使用 Redis

要將 Redis 存儲放入 Docker 容器中,目標環境中必須有 Docker。 以下說明向您展示瞭如何在 Windows 上安裝 Docker。

您可以按照 Docker 網站上針對 Unix 或基於 Unix 的操作系統的指南進行操作。 安裝和配置後,您可以在 Docker 容器內創建網絡。 然後就可以安裝Redis並創建數據庫了。 最後,您可以對 Redis 數據庫執行操作。

首先,在您的操作系統上安裝 Docker。 或者,導航到 Docker Hub 並創建一個帳戶。 您需要一個帳戶來創建和發布圖像。

Docker Hub註冊表單
泊塢樞紐

創建帳戶後,登錄 Docker Hub 並下載操作系統的最新版本的 Docker Desktop。

帶有操作系統選項的 Docker Desktop 下載頁面。
Docker 下載頁面

安裝過程完成後,轉到終端窗口查看 Docker 引擎是否準備好運行並輸入以下命令:

 docker --version
檢查安裝的Docker版本
安裝的Docker版本

然後輸入: docker-compose --version

檢查隨 Docker 安裝的 Compose 的版本
使用 Docker 安裝 Compose

Compose 是一種使用 YAML 文件定義和運行多容器 Docker 應用程序的工具,您可以使用它來配置應用程序服務。

您可以使用以下代碼運行 Dockerized Redis 以驗證 Docker 引擎已啟動並正在運行。 此示例運行來自 Docker Hub 的 Redis 映像並將其命名為my-redis-container

 docker run --name my-redis-container -d redis
從名為 my-redis-container 的 Docker Hub 運行 Redis 鏡像
來自 Docker Hub 的名為 my-redis-container 的 Redis 鏡像

因為本地沒有鏡像,所以 Docker 從 Docker Hub 拉取 Redis 鏡像。

現在,您可以打開 Docker Desktop 以確認它已拉取 Redis 映像。 在儀表板上,單擊左側面板上的圖像

從 Docker Desktop 驗證您的 Redis 映像是否已啟動並正在運行
碼頭工人桌面

現在,您可以創建一個網絡。 請注意,Docker 驅動程序使用 bridge 或 overlay 內置網絡驅動程序來創建 Docker 網絡。 您還可以安裝和使用第三方網絡驅動程序。

不同之處在於橋接網絡在單個 Docker 引擎安裝上是隔離的,而覆蓋網絡跨越多個 Docker 主機,每個主機都運行一個引擎。

類型:

 docker network create -d bridge kinsta-demo-network
使用網橋驅動程序創建一個新的 Docker 網絡
帶有網橋驅動程序的 Docker 網絡

如果您默認不指定任何驅動程序,Docker 將使用網橋驅動程序創建新網絡,因為它會在您安裝 Docker 引擎時自動創建網橋驅動程序。 但是,如果您使用 Docker run 命令運行 Docker 容器,它將不會使用此網絡。

現在您已經有了網絡,下一步是在 Docker 容器中安裝 Redis。 為此,請鍵入: docker pull redis

從 Docker Hub 拉取 Redis 鏡像
從 Docker Hub 拉取 Redis 鏡像

要驗證 Redis 映像是否已正確安裝,請運行以下命令之一:

 docker images
 docker image ls
列出用戶終端中可用的 Docker 鏡像
用戶終端中可用的 Docker 鏡像


接下來,您將創建並啟動 Redis 容器。 為此,請運行以下命令:
 docker run -it –name dev_kinsta_redis_container -d redis
創建並運行 Docker 容器
Docker容器

現在驗證 Redis 是否正在容器中運行。 為此,請鍵入: docker ps

驗證 Redis 是否已啟動並在容器中運行
驗證 Redis 是否已啟動並在容器中運行

現在您已經確認您的 Docker 容器已啟動並正在運行,您可以將容器添加到網絡中。 類型: docker network connect

將 Docker 容器添加到創建的 docker 網絡
將 Docker 容器添加到創建的 docker 網絡

一切按預期運行後,下一步是驗證在 Docker 中運行的 Redis 服務器是否已準備好接受連接。 為此,請使用docker logs

驗證 Redis 映像是否在 Docker 容器內運行
驗證 Redis 映像是否在 Docker 容器內運行

接下來,您必須創建一個數據庫,因為您需要一種方法來連接到 Redis 容器以在服務器上運行命令。 為此,請鍵入: docker exec -it bash 。 您可以互換使用容器名稱和容器 ID。

連接到 Redis 容器實例
連接到 Redis 容器實例。

在容器中,使用 CLI 運行命令。 請注意,Redis 自動安裝了 Docker 主機。 要使用 Redis-CLI,請鍵入: redis-cli

使用 Redis CLI 運行 Redis 命令
使用 Redis CLI 運行 Redis 命令

這會將您連接到本地主機上 Redis 的默認端口。 輸入: ping ,響應應該是pong

測試Redis連接是否正常運行
測試Redis連接是否正常運行

接下來,通過鍵入select在 Redis 服務器中選擇一個數據庫。 雖然默認數據庫是0 ,但選擇db 1

選擇特定的 Redis 數據庫
選擇特定的 Redis 數據庫

接下來,將數據插入數據庫。 使用 Redis SET命令。 為此,請鍵入SET <key> <value>

例如:

 SET mykey "Hello"

要獲得相同的密鑰,請鍵入:

 get myKey
從 Redis 插入和檢索數據
從 Redis 插入和檢索數據

要獲取密鑰的值,請運行get 。 這將返回值。 接下來,通過鍵入MONITOR來監控您的 Redis 數據庫。

監控 Redis 數據庫
監控 Redis 數據庫

最後,通過退出 CLI 停止 Redis 服務器。 鍵入exit兩次以退出 CLI 和 Redis。

退出 Redis CLI
退出 Redis CLI

最後,通過鍵入docker stop停止運行 Redis 容器。

執行命令停止Docker容器運行
執行命令停止Docker容器運行

Redis 與 DevKinsta

DevKinsta 允許您將 WordPress 站點連接到 Redis 數據庫。 借助 DevKinsta,Redis 附加組件可作為對象緩存無縫工作,以跨多個頁面加載持久保存數據。 這意味著通過使用 Redis 附加組件,您可以使用緩存來重用對象,而不是不斷地查詢 MySQL 數據庫。

下載並設置 DevKinsta 後,將 Docker Desktop 安裝為依賴項,它用於在容器內創建本地環境文件。 使用此設置,您可以在 Devkinsta 中配置 Redis 附加組件。

因此,DevKinsta 的 Redis 附加組件可以用作輔助資源,減少主數據庫的負載,增加響應時間,並使應用程序運行更快。

這轉化為應用程序可以有效地處理更多負載和擴展。 查看這篇文章以在您的網站上使用 Redis 插件。

Redis + Docker = 天作之合! 這就是為什麼容器化 Redis 應用程序是必經之路,以及如何充分利用它。 點擊鳴叫

概括

在 Docker 容器中運行 Redis 有很多優點。 它為您的應用程序提供沙盒環境,因此您不必再關心部署應用程序的平台。 此外,Docker 具有易用性、靈活性和高可靠性。

關於安全性,您可以使用 Synk 開箱即用地檢查和掃描安全漏洞,Synk 是一種提供 Docker 映像安全性可見性的工具。 在靈活性方面,Docker 適用於大多數基於 Unix 和 Windows 的操作系統和應用程序。 這種靈活性意味著無論操作系統如何,碼頭化或容器化的應用程序或服務始終運行。

將 Docker 和 Redis 附加組件與 DevKinsta 一起使用很容易,當您啟動它時,它會在本地啟動一個 dockerized WordPress 站點。 立即查看 DevKinsta 和 Redis 插件,了解 Docker 中 Redis 的強大功能。