如何以及為什麼要在 Docker 中運行 Redis
已發表: 2023-05-02Redis 是一個高度可用的內存數據庫。 其磁盤持久性鍵值數據存儲非常適合多種高可用性用途。
另一方面,Docker 是一種用於容器化應用程序和服務、隔離它們的環境並允許它們單獨運行的工具。 您可以將 Docker 用作具有所有必要依賴項、配置、腳本等的應用程序和服務的包管理器。稱為 Dockerfile 的腳本放置在 Docker 容器內,並允許您將容器作為單個實體進行部署。
本文教您如何有效地使用這兩種開源技術。 它還涉及為什麼在 Docker 容器中運行 Redis 集群至關重要,以及與在虛擬機或裸機服務器上運行 Redis 集群相比,這樣做的優勢和好處。
Redis的各種用途
Redis 有幾個優點。 它最受歡迎的用途包括:
- 分佈式,鍵值數據庫緩存
- 消息代理
- 持久對象緩存服務器
此外,Redis 可以支持多種數據類型和結構,使其適合用作應用程序的主要和次要數據庫層。 它還支持列表、流、散列、集合等。
但是,您可以通過將 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 Desktop。
安裝過程完成後,轉到終端窗口查看 Docker 引擎是否準備好運行並輸入以下命令:
docker --version
然後輸入: docker-compose --version
。
Compose 是一種使用 YAML 文件定義和運行多容器 Docker 應用程序的工具,您可以使用它來配置應用程序服務。
您可以使用以下代碼運行 Dockerized Redis 以驗證 Docker 引擎已啟動並正在運行。 此示例運行來自 Docker Hub 的 Redis 映像並將其命名為my-redis-container 。
docker run --name my-redis-container -d redis
因為本地沒有鏡像,所以 Docker 從 Docker Hub 拉取 Redis 鏡像。
現在,您可以打開 Docker Desktop 以確認它已拉取 Redis 映像。 在儀表板上,單擊左側面板上的圖像。
現在,您可以創建一個網絡。 請注意,Docker 驅動程序使用 bridge 或 overlay 內置網絡驅動程序來創建 Docker 網絡。 您還可以安裝和使用第三方網絡驅動程序。
不同之處在於橋接網絡在單個 Docker 引擎安裝上是隔離的,而覆蓋網絡跨越多個 Docker 主機,每個主機都運行一個引擎。
類型:
docker network create -d bridge kinsta-demo-network
如果您默認不指定任何驅動程序,Docker 將使用網橋驅動程序創建新網絡,因為它會在您安裝 Docker 引擎時自動創建網橋驅動程序。 但是,如果您使用 Docker run 命令運行 Docker 容器,它將不會使用此網絡。
現在您已經有了網絡,下一步是在 Docker 容器中安裝 Redis。 為此,請鍵入: docker pull redis
。
要驗證 Redis 映像是否已正確安裝,請運行以下命令之一:
docker images
docker image ls
接下來,您將創建並啟動 Redis 容器。 為此,請運行以下命令:
docker run -it –name dev_kinsta_redis_container -d redis
現在驗證 Redis 是否正在容器中運行。 為此,請鍵入: docker ps
。
現在您已經確認您的 Docker 容器已啟動並正在運行,您可以將容器添加到網絡中。 類型: docker network connect
。
一切按預期運行後,下一步是驗證在 Docker 中運行的 Redis 服務器是否已準備好接受連接。 為此,請使用docker logs
。
接下來,您必須創建一個數據庫,因為您需要一種方法來連接到 Redis 容器以在服務器上運行命令。 為此,請鍵入: docker exec -it bash
。 您可以互換使用容器名稱和容器 ID。
在容器中,使用 CLI 運行命令。 請注意,Redis 自動安裝了 Docker 主機。 要使用 Redis-CLI,請鍵入: redis-cli
。
這會將您連接到本地主機上 Redis 的默認端口。 輸入: ping
,響應應該是pong
。
接下來,通過鍵入select
在 Redis 服務器中選擇一個數據庫。 雖然默認數據庫是0
,但選擇db 1
。
接下來,將數據插入數據庫。 使用 Redis SET
命令。 為此,請鍵入SET <key> <value>
。
例如:
SET mykey "Hello"
要獲得相同的密鑰,請鍵入:
get myKey
要獲取密鑰的值,請運行get
。 這將返回值。 接下來,通過鍵入MONITOR
來監控您的 Redis 數據庫。
最後,通過退出 CLI 停止 Redis 服務器。 鍵入exit
兩次以退出 CLI 和 Redis。
最後,通過鍵入docker stop
停止運行 Redis 容器。
Redis 與 DevKinsta
DevKinsta 允許您將 WordPress 站點連接到 Redis 數據庫。 借助 DevKinsta,Redis 附加組件可作為對象緩存無縫工作,以跨多個頁面加載持久保存數據。 這意味著通過使用 Redis 附加組件,您可以使用緩存來重用對象,而不是不斷地查詢 MySQL 數據庫。
下載並設置 DevKinsta 後,將 Docker Desktop 安裝為依賴項,它用於在容器內創建本地環境文件。 使用此設置,您可以在 Devkinsta 中配置 Redis 附加組件。
因此,DevKinsta 的 Redis 附加組件可以用作輔助資源,減少主數據庫的負載,增加響應時間,並使應用程序運行更快。
這轉化為應用程序可以有效地處理更多負載和擴展。 查看這篇文章以在您的網站上使用 Redis 插件。
概括
在 Docker 容器中運行 Redis 有很多優點。 它為您的應用程序提供沙盒環境,因此您不必再關心部署應用程序的平台。 此外,Docker 具有易用性、靈活性和高可靠性。
關於安全性,您可以使用 Synk 開箱即用地檢查和掃描安全漏洞,Synk 是一種提供 Docker 映像安全性可見性的工具。 在靈活性方面,Docker 適用於大多數基於 Unix 和 Windows 的操作系統和應用程序。 這種靈活性意味著無論操作系統如何,碼頭化或容器化的應用程序或服務始終運行。
將 Docker 和 Redis 附加組件與 DevKinsta 一起使用很容易,當您啟動它時,它會在本地啟動一個 dockerized WordPress 站點。 立即查看 DevKinsta 和 Redis 插件,了解 Docker 中 Redis 的強大功能。