Redis是一個高可用的記憶體資料庫。它的磁碟永續性鍵值資料儲存是多種高可用性用途的理想選擇。
另一方面,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 Hub並下載你的作業系統的最新版本的Docker Desktop。
Docker下載頁面
安裝程式完成後,進入你的終端視窗,看看Docker引擎是否準備好了,然後輸入以下命令:
docker --version
已安裝的Docker版本
然後輸入:docker-compose --version
.
與Docker一起安裝的Compose
Compose是一個使用YAML檔案定義和執行多容器Docker應用程式的工具,你用它來配置應用程式服務。
你可以使用下面的程式碼執行一個Docker化的Redis來驗證Docker引擎是否啟動和執行。這個例子從Docker Hub執行Redis映象,並命名為my-redis-container。
docker run --name my-redis-container -d redis
來自Docker Hub的Redis映象被命名為my-redis-container
因為你沒有本地的映象,所以Docker從Docker Hub中提取Redis映象。
現在,你可以開啟Docker桌面,確認它拉取了Redis映象。在儀表板上,點選左側面板上的Images。
Docker Desktop
現在,你可以建立一個網路。注意,Docker驅動使用橋接或覆蓋的內建網路驅動來建立Docker網路。你也可以安裝和使用第三方的網路驅動。
不同的是,橋接網路在單個Docker引擎安裝上是隔離的,而覆蓋網路跨越多個Docker主機,每個主機執行一個引擎。
型別:
docker network create -d bridge kinsta-demo-network
使用橋接驅動的Docker網路
如果你預設沒有指定任何驅動,Docker會使用橋接驅動來建立一個新的網路,因為它在你安裝Docker引擎時自動建立橋接驅動。然而,如果你用Docker執行命令執行一個Docker容器,它就不會使用這個網路。
現在你有了一個網路,接下來就是在Docker容器內安裝Redis。要做到這一點,輸入: docker pull redis
。
從Docker Hub拉取Redis映象
為了驗證Redis映象的安裝是否正確,請執行以下命令之一:
docker images
docker image ls
使用者終端中的可用Docker映象
接下來,你建立並啟動Redis容器。要做到這一點,請執行以下命令:
docker run -it –name dev_kinsta_redis_container -d redis
Docker conatainer
現在驗證Redis是否在容器中執行。要做到這一點,輸入: docker ps
。
驗證Redis是否在容器中啟動和執行
現在你已經確認你的Docker容器已經啟動並執行,你可以將容器新增到網路中。輸入: docker network connect
。
將一個Docker容器新增到建立的docker網路中
一切都按預期進行,下一步是驗證你在Docker內執行的Redis伺服器是否準備好接受連線。要做到這一點,請使用 docker logs
。
驗證Redis映象是否在Docker容器內執行
接下來,你必須建立一個資料庫,因為你需要一種方法來連線到Redis容器,以便在伺服器上執行命令。要做到這一點,輸入:docker exec -it bash。你可以交替使用容器名稱和容器ID。
連線到Redis容器例項
在容器中,使用CLI來執行命令。注意,Redis會自動安裝Docker主機。要使用Redis-CLI,請輸入: redis-cli
。
使用Redis CLI來執行Redis命令
這樣就可以連線到本地主機上的Redis的預設埠。輸入: ping
, 響應應該是 pong
。
測試Redis連線是否已啟動並執行
接下來,通過輸入 select
來選擇你的Redis伺服器內的資料庫。雖然預設的資料庫是 0
,但選擇 db 1
。
選擇一個特定的Redis資料庫
接下來,向資料庫插入資料。使用 Redis SET
命令。要這樣做,鍵入 SET <key> <value>
。
例如:
SET mykey "Hello"
要獲得相同的鍵,鍵入
get myKey
從Redis插入和取回資料
要獲得鍵的值,執行 get
。這將返回該值。接下來,通過輸入 MONITOR
來監控你的 Redis 資料庫。
監控 Redis 資料庫
最後,通過退出CLI來停止Redis伺服器。輸入 exit
兩次以退出CLI和Redis。
從 Redis CLI 中退出
最後,通過輸入 docker stop
來停止Redis容器的執行。
執行命令,停止Docker容器的執行。
小結
在Docker容器中執行Redis有很多好處。它為你的應用程式提供了一個沙盒環境,所以你不必再關心你部署應用程式的平臺。此外,Docker實現了易用性、靈活性和高可靠性。
關於安全性,你可以用Synk檢查和掃描安全漏洞,Synk是一個對Docker映象的安全性提供可見性的工具。而關於靈活性,Docker適用於大多數基於Unix和Windows的作業系統和應用程式。這種靈活性意味著,無論作業系統如何,docker化或容器化的應用程式或服務總是在執行。
評論留言