docker 在部署 Redis 容器使用 redis.conf 配置啟動失敗


在雲服務器上部署 docker 下安裝 Redis 容器,服務器系統是 centOS 8.0 64 位、Docker 20.10.12

我在 docker 上部署 Redis 的過程如下:

#1.拉取最新的 redis 鏡像文件
docker pull redis:latest
#2.1在雲服務器中創建文件夾 /data/redis、/data/redis/data 
#2.2從官網上下載 Redis 配置文件,修改該文件的配置,並將修改后的 redis.conf 上傳到服務器中的 /data/redis 目錄中
#3 啟動redis
docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf  -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

但是輸入 啟動 redis 的命令后,沒有報錯。然而查看 docker 的線程也看不到 redis

在 portainer 中 redis 容器也顯示 stopped

查看 redis 的容器日志發現也沒有其他問題,在網上找了一圈,發現是 docker run 命令中有一個參數 -d 是默認以守護線程運行,是不是這個線程和 redis 的配置起了沖突。我看了一下我的redis.conf 文件配置,發現 daemonize 這個參數后面確實是 yes 。改為 no 后關閉以守護線程的方式啟動。redis 容器正常運行。

下面再回顧一下 redis.conf 文件的修改:

  • bind 127.0.0.1 這一行需要把 # 注釋掉,讓redis 可以被外部所訪問
  • daemonize 修改為 no ,關閉以守護線程的方式啟動
  • requirepass 設置 Redis 連接密碼,防止被當成礦機
  • appendonly 修改為yes, 實現redis 的持久化

如果還是連接不上 Redis 服務,這個時候可以設置一下防火牆, 以及服務器的 9000 端口才能訪問 portainer

  1. 啟動防火牆 systemctl start firewalld
  2. 設置Redis 6379 端口:firewall-cmd --zone=public --add-port=6379/tcp --permanent
  3. 設置Portainer 9000 端口:firewall-cmd --zone=public --add-port=9000/tcp --permanent
  4. 重新加載:firewall-cmd --reload

參考博文:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM