如何在Docker中部署和執行Redis?


Redis是一個開源的記憶體資料結構儲存,可以用作資料庫、快取或訊息代理。它以高效能和低延遲而聞名,使其成為即時應用的熱門選擇。

另一方面,Docker是一個容器化平臺,允許開發者將應用程式打包到可以在任何平臺上執行的容器中。與傳統的虛擬機器相比,容器更輕量級、部署速度更快、佔用空間更小。

部署準備

在你的機器上安裝Docker

在Docker中部署Redis之前,你需要在你的機器上安裝Docker。為此,請訪問Docker官方網站並下載適合你作業系統的版本。安裝過程可能需要幾分鐘,但完成後,你應該已經啟動並運行了最新版本的Docker。

從Docker Hub下載Redis映象

安裝Docker後,你可以從Docker Hub下載Redis映象。這很簡單——只需開啟終端或命令提示符視窗並輸入以下命令:

docker pull redis  

這會將Docker Hub上最新的Redis版本下載到你的本地容器登錄檔中。

建立Dockerfile以進行自定義配置

雖然可以使用預設配置執行Redis容器,但使用自定義配置可以最佳化其效能並提高安全性。要建立自定義配置,首先在你的工作目錄中建立一個名為“Dockerfile”的新檔案。

在此檔案中,將基本映象指定為“redis”。然後使用COPY命令新增你想要使用的任何其他配置檔案。

使用RUN命令指定需要執行的任何其他命令。例如:

FROM redis COPY redis.conf /usr/local/etc/redis/redis.conf 
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]  

這會將你的自定義Redis配置檔案(名為“redis.conf”)複製到容器中的/usr/local/etc/redis/。

它將使用此處指定的CMD命令基於此自定義配置檔案執行Redis。透過有效地遵循這些步驟,你可以順利地準備在Docker容器中部署和執行Redis。

在Docker中部署Redis

使用預設配置執行Redis容器

在Docker容器中部署Redis最簡單的方法是使用Docker Hub上的官方Redis映象。要使用預設配置執行容器,請使用以下命令:

docker run --name my-redis -d redis  

此命令以分離模式啟動一個名為“my-redis”的新容器,使用最新版本的Redis映象。預設配置將Redis設定為單節點伺服器。

要檢查你的容器是否正在執行,請使用以下命令:

docker ps  

你應該看到“my-redis”列在你的執行容器中。你還可以透過執行以下命令來檢查容器的日誌:

docker logs my-redis  

這將顯示Redis伺服器生成的任何輸出。

使用環境變數或配置檔案配置具有自定義設定的Redis容器

要自定義Redis部署,你可以使用環境變數或配置檔案向容器傳遞配置選項。對於小的更改,使用環境變數更方便;而使用配置檔案則允許你一次配置許多選項,並在多個例項中重複使用它們。

例如,要設定用於身份驗證的自定義密碼,可以使用這樣的環境變數:

docker run --name my-redis -d -e REDIS_PASSWORD=mypassword redis  

要使用配置檔案一次配置多個選項,請建立一個包含所需設定的配置檔案(例如`myconfig.conf`),並將其作為卷掛載到容器中,如下所示:

docker run --name my-redis -d -v /path/to/myconfig.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf  

與Docker中的Redis互動

使用redis-cli與Redis的容器化例項互動

在Docker容器中成功部署Redis後,務必驗證其是否正常執行,並與Redis互動以執行設定和檢索鍵值對等任務。一種方法是使用redis-cli命令列介面工具。要使用此工具,你需要啟動一個新的終端視窗並執行以下命令:

docker exec -it redis-cli

此命令將啟動與Redis容器化例項的互動式會話,允許你執行Redis命令,就像在Redis的本地例項上一樣。

例如,你可以使用以下命令設定一個鍵:

set mykey "hello world"  

然後,你可以使用以下命令檢索該值:

get mykey  

從主機上執行的應用程式連線到Redis的容器化例項

除了透過redis-cli工具與Redis的容器化例項互動外,主機(Docker外部)上執行的應用程式也可以連線並與Redis的容器化例項互動。為此,你需要透過執行以下命令獲取Docker主機網路的IP地址:

docker network inspect bridge   

獲取此IP地址後,只需將其用於應用程式程式碼,就像它是訪問外部服務的任何其他IP地址一樣。

請注意,在嘗試連線時,還需要考慮在你的docker run或docker-compose.yml檔案中定義的任何埠對映。例如,如果你的Docker主機網路的IP地址為172.17.0.1,並且你將容器的6379埠對映到主機上的6380埠,則可以使用以下程式碼從你的應用程式連線到Redis:

python import redis 
r = redis.StrictRedis(host='172.17.0.1', port=6380, db=0) r.set('mykey', 'hello world')  

在此示例中,我們使用Python Redis庫連線到Redis並設定鍵值對。但是,任何具有Redis客戶端庫的程式語言都可以以類似的方式與在Docker中執行的Redis容器化例項互動。

在Docker中執行Redis的最佳實踐

使用記憶體限制、永續性和網路設定最佳化效能

在Docker容器中執行Redis時,務必最佳化例項的效能。這可以透過配置記憶體限制、永續性設定和網路設定來實現。

要最佳化記憶體使用,可以使用`maxmemory`設定配置Redis允許使用的最大記憶體量。如果沒有此設定,Redis將繼續分配記憶體,直到用完為止,這可能導致效能下降甚至崩潰。

使用身份驗證和加密來保護你的部署

在生產環境中使用Docker容器部署Redis時,可能會儲存或透過網路傳輸敏感資料,因此務必透過設定身份驗證和加密來確保部署安全。Redis支援基於密碼的身份驗證機制,客戶端必須提供密碼才能在Redis上執行任何命令。

要在Redis的容器化例項中啟用身份驗證,只需在配置檔案中設定身份驗證密碼,並在使用docker run命令啟動容器時提供它。你還可以透過在客戶端(即應用程式)和伺服器端(即Redis例項)啟用TLS來保護客戶端應用程式和Redis容器化例項之間的通訊安全。

結論

在本文中,我們探討了在Docker中部署和執行Redis的優勢。我們已經瞭解了在Docker中設定Redis容器是多麼容易,以及它如何提高可擴充套件性、靈活性和易於管理性。

更新於:2023年7月10日

瀏覽量:721

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告