docker-compose配置并部署redis服務(wù)的實現(xiàn)
前言
在使用docker部署redis的時候,遇到很多坑,在此記錄下遇到的問題
一、安裝docker和docker-compose
### 安裝docker curl -sSL https://get.daocloud.io/docker | sh ### 啟動docker systemctl start docker ### 安裝docker-compose curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose ### 將可執(zhí)行權(quán)限應(yīng)用于二進(jìn)制文件 chmod +x /usr/local/bin/docker-compose
二、下載redis版本,本文中選擇的是6.2.6版本
下載網(wǎng)址:download.redis.io/releases/

三、解壓并復(fù)制redis.conf配置文件到服務(wù)器上,本文是放在/etc/redis/redis.conf

四、修改redis.conf配置文件
### 指定redis綁定的主機(jī)地址,注釋掉這部分,使redis可以外部訪問
# bind 127.0.0.1 -::1
### 指定訪問redis服務(wù)端的端口
port 6379
### 指定客戶端連接redis服務(wù)器時,當(dāng)閑置的時間為多少(如300)秒時關(guān)閉連接(0表示禁用)
timeout 0
### 默認(rèn)情況下,Redis不作為守護(hù)進(jìn)程運(yùn)行。如果需要,請使用“yes”
daemonize no
### 給redis設(shè)置密碼,不需要密碼的話則注釋
# requirepass foobared
### 開啟redis持久化,默認(rèn)為no
appendonly yes
### 防止出現(xiàn)遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個現(xiàn)有的連接的錯誤 默認(rèn)是300
tcp-keepalive 300
### 指定redis數(shù)據(jù)庫的日志級別,常用的日志級別有debug、verbose、notice、warning,不進(jìn)行修改的情況下默認(rèn)的是notice
loglevel notice
### 指定redis數(shù)據(jù)庫多長時間內(nèi)(s)有多少次(c)更新操作時就把緩存中的數(shù)據(jù)同步到本地庫,比如:save 600 2,指的是10分鐘內(nèi)有2次更新操作,就同步到本地庫
save <s><c>
### 指定redis的最大內(nèi)存。由于Redis 在啟動時會把數(shù)據(jù)加載到內(nèi)存中,當(dāng)數(shù)據(jù)達(dá)到最大內(nèi)存時,redis會自動把已經(jīng)到期和即將到期的key值。所以可以根據(jù)需求調(diào)整自己的所需的最大內(nèi)存
maxmemory 500mb
### 設(shè)置了maxmemory的選項,redis內(nèi)存使用達(dá)到上限??梢酝ㄟ^設(shè)置LRU算法來刪除部分key,釋放空間。默認(rèn)是按照過期時間的,如果set時候沒有加上過期時間就會導(dǎo)致數(shù)據(jù)寫滿maxmemory
maxmemory-policy volatile-lru
### 設(shè)置外部網(wǎng)絡(luò)連接redis服務(wù),開啟需配置bind ip或者設(shè)置訪問密碼,關(guān)閉此時外部網(wǎng)絡(luò)可以直接訪問
# protected-mode yes五、配置docker-compose.yml
my_redis:
image: redis:6.2.6-alpine # 指定服務(wù)鏡像,最好是與之前下載的redis配置文件保持一致
container_name: my_redis # 容器名稱
restart: on-failure # 重啟方式
environment:
- TZ=Asia/Shanghai # 設(shè)置時區(qū)
volumes: # 配置數(shù)據(jù)卷
- /root/redis/data:/data
- /etc/redis/redis.conf:/etc/redis/redis.conf
ports: # 映射端口
- "6380:6379"
sysctls: # 設(shè)置容器中的內(nèi)核參數(shù)
- net.core.somaxconn=1024
# - vm.overcommit_memory=1
command: /bin/sh -c "echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
&& redis-server /etc/redis/redis.conf --appendonly yes" # 指定配置文件并開啟持久化
privileged: true # 使用該參數(shù),container內(nèi)的root擁有真正的root權(quán)限。否則,container內(nèi)的root只是外部的一個普通用戶權(quán)限
復(fù)制代碼六、啟動容器
### 啟動容器 docker-compose up -d ### 進(jìn)入容器 docker exec -it my_redis /bin/sh ### 進(jìn)入客戶端 redis-cli ### 如果設(shè)置了密碼,需要輸入auth 密碼 auth 你的密碼 ### 查看已存儲的key keys * ### 查看redis信息 info
七、redis啟動后遇到的問題
- Warning: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128
意思:無法強(qiáng)制執(zhí)行TCP backlog設(shè)置511,因為/proc/sys/net/core/somaxconn被設(shè)置為較低的值128
echo "net.core.somaxconn=551" > /etc/sysctl.conf sysctl net.core.somaxconn=551
- Warning:overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect
意思: overcommit_memory的值設(shè)置為0! 在內(nèi)存不足的情況下,后臺保存可能會失敗。 要解決此問題,請將“vm.overcommit_memory = 1”添加到/etc/sysctl.conf,然后重新啟動或運(yùn)行命令“sysctl vm.overcommit_memory = 1”以使其生效
echo 1 > /proc/sys/vm/overcommit_memory echo "vm.overcommit_memory=1" >> /etc/sysctl.conf sysctl vm.overcommit_memory=1
- redis報錯:RDB: 0 MB of memory used by copy-on-write

由于我redis.conf配置文件,配置了save,將緩存中的數(shù)據(jù)同步到本地庫,所以我暫時的解決方法是取消保存,設(shè)置save ""
八、分享個redis可視化工具
redis-insight下載鏈接:https://redis.com/redis-enterprise/redis-insight/
到此這篇關(guān)于docker-compose配置并部署redis服務(wù)的實現(xiàn)的文章就介紹到這了,更多相關(guān)docker-compose配置部署redis服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- docker常用容器啟動docker-compose.yml配置文件使用
- 關(guān)于immich?docker-compose.yml配置文件詳解
- 在docker-compose.yml文件中配置容器的環(huán)境變量方式
- docker-compose.yml參數(shù)的用法(配置文件)
- 使用docker?compose快速配置一組容器服務(wù)詳解
- Springboot使用docker-compose實現(xiàn)動態(tài)配置過程
- 詳解Docker Compose配置文件參數(shù)
- Docker compose配置文件寫法及命令使用示例
- docker-compose安裝yml文件配置方式
- docker compose 一鍵部署分布式配置中心Apollo的過程詳解
- docker-compose部署配置jenkins的詳細(xì)教程
- Docker Compose 配置指南小結(jié)
相關(guān)文章
docker-compose網(wǎng)絡(luò)設(shè)置之networks的使用
本文詳細(xì)解釋了在使用 Docker Compose時如何配置網(wǎng)絡(luò),包括創(chuàng)建、使用和問題解決等方面,介紹了如何通過docker-compose.yml文件快速編排和部署應(yīng)用服務(wù),同時解決網(wǎng)絡(luò)隔離問題,感興趣的可以了解一下2024-10-10
docker啟動mysql及-e MYSQL_ROOT_PASSWORD=my-secret-pw問題解決
本文主要介紹了docker啟動mysql及-e MYSQL_ROOT_PASSWORD=my-secret-pw問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
詳解Docker創(chuàng)建支持ssh服務(wù)的容器和鏡像
本篇文章主要介紹了詳解Docker創(chuàng)建支持ssh服務(wù)的容器和鏡像,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
docker之如何設(shè)置日志文件大小及個數(shù)
這篇文章主要介紹了docker之如何設(shè)置日志文件大小及個數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
如何讓docker中的mysql啟動時自動執(zhí)行sql語句
這篇文章主要介紹了讓docker中的mysql啟動時自動執(zhí)行sql的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
Docker容器網(wǎng)絡(luò)互聯(lián)的項目實踐
docker中的容器都是連接到一個虛擬的網(wǎng)橋上的,這為獨(dú)立的容器提供了互聯(lián)的可能,本文主要介紹了Docker容器網(wǎng)絡(luò)互聯(lián)的項目實踐,具有一定的參考價值,感興趣的可以了解一下2024-03-03

