docker-compose配置并部署redis服务的实现

目录
  • 前言
  • 一、安装docker和docker-compose
  • 二、下载redis版本,本文中选择的是6.2.6版本
  • 三、解压并复制redis.conf配置文件到服务器上,本文是放在/etc/redis/redis.conf
  • 四、修改redis.conf配置文件
  • 五、配置docker-compose.yml
  • 六、启动容器
  • 七、redis启动后遇到的问题
  • 八、分享个redis可视化工具

前言

在使用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
### 将可执行权限应用于二进制文件
chmod +x /usr/local/bin/docker-compose

二、下载redis版本,本文中选择的是6.2.6版本

下载网址:download.redis.io/releases/

三、解压并复制redis.conf配置文件到服务器上,本文是放在/etc/redis/redis.conf

四、修改redis.conf配置文件

### 指定redis绑定的主机地址,注释掉这部分,使redis可以外部访问
    # bind 127.0.0.1 -::1
### 指定访问redis服务端的端口
    port 6379
### 指定客户端连接redis服务器时,当闲置的时间为多少(如300)秒时关闭连接(0表示禁用)
    timeout 0
### 默认情况下,Redis不作为守护进程运行。如果需要,请使用“yes”
    daemonize no
### 给redis设置密码,不需要密码的话则注释
    # requirepass foobared
### 开启redis持久化,默认为no
    appendonly yes
### 防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
    tcp-keepalive 300
### 指定redis数据库的日志级别,常用的日志级别有debug、verbose、notice、warning,不进行修改的情况下默认的是notice
    loglevel notice
### 指定redis数据库多长时间内(s)有多少次(c)更新操作时就把缓存中的数据同步到本地库,比如:save 600 2,指的是10分钟内有2次更新操作,就同步到本地库
    save <s><c>
### 指定redis的最大内存。由于Redis 在启动时会把数据加载到内存中,当数据达到最大内存时,redis会自动把已经到期和即将到期的key值。所以可以根据需求调整自己的所需的最大内存
    maxmemory 500mb
### 设置了maxmemory的选项,redis内存使用达到上限。可以通过设置LRU算法来删除部分key,释放空间。默认是按照过期时间的,如果set时候没有加上过期时间就会导致数据写满maxmemory
    maxmemory-policy volatile-lru
### 设置外部网络连接redis服务,开启需配置bind ip或者设置访问密码,关闭此时外部网络可以直接访问
    # protected-mode yes

五、配置docker-compose.yml

my_redis:
    image: redis:6.2.6-alpine # 指定服务镜像,最好是与之前下载的redis配置文件保持一致
    container_name: my_redis # 容器名称
    restart: on-failure # 重启方式
    environment:
      - TZ=Asia/Shanghai # 设置时区
    volumes: # 配置数据卷
      - /root/redis/data:/data
      - /etc/redis/redis.conf:/etc/redis/redis.conf
    ports: # 映射端口
      - "6380:6379"
    sysctls: # 设置容器中的内核参数
      - 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 # 使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限
复制代码

六、启动容器

### 启动容器
docker-compose up -d

### 进入容器
docker exec -it my_redis /bin/sh
### 进入客户端
redis-cli
### 如果设置了密码,需要输入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

意思:无法强制执行TCP backlog设置511,因为/proc/sys/net/core/somaxconn被设置为较低的值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的值设置为0! 在内存不足的情况下,后台保存可能会失败。 要解决此问题,请将“vm.overcommit_memory = 1”添加到/etc/sysctl.conf,然后重新启动或运行命令“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,将缓存中的数据同步到本地库,所以我暂时的解决方法是取消保存,设置save ""

八、分享个redis可视化工具

redis-insight下载链接:https://redis.com/redis-enterprise/redis-insight/

到此这篇关于docker-compose配置并部署redis服务的实现的文章就介绍到这了,更多相关docker-compose配置部署redis服务内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 关于docker compose安装redis集群的问题(集群扩容、集群收缩)

    目录 一.redis 配置信息模板 二.编写批量生成配置文件脚本 三.批量生成配置文件 四.编写 docker-compose 文件 五.做集群.分配插槽 六.测试: 七.手动扩容 八.添加主从节点 1.添加主节点 2.添加从节点 九.分配插槽 十.集群测试 十一.常用命令 一.redis 配置信息模板 文件名:redis-cluster.tmpl # redis端口 port ${PORT} #redis 访问密码 requirepass 123456 #redis 访问Master节点密码

  • docker-compose配置并部署redis服务的实现

    目录 前言 一.安装docker和docker-compose 二.下载redis版本,本文中选择的是6.2.6版本 三.解压并复制redis.conf配置文件到服务器上,本文是放在/etc/redis/redis.conf 四.修改redis.conf配置文件 五.配置docker-compose.yml 六.启动容器 七.redis启动后遇到的问题 八.分享个redis可视化工具 前言 在使用docker部署redis的时候,遇到很多坑,在此记录下遇到的问题 一.安装docker和docke

  • Docker Compose多容器部署的实现

    一.wordpress部署 这里先以wordpress的部署为例引出Docker Compose,wordpress的部署需要wordpress和mysql的镜像: (一)准备环境 1.拉取wordpress镜像 [root@docker-node1 /]# docker pull wordpress 2.拉取mysql镜像 [root@docker-node1 /]# docker pull mysql 3.镜像列表 [root@docker-node1 /]# docker image ls

  • Docker Compose一键ELK部署的方法实现

    安装   Filebeat 已经完全替代了 Logstash-Forwarder 成为新一代的日志采集器,因为它更加轻量.安全.基于 Filebeat + ELK 的部署方案架构图如下:    软件版本: 服务 版本 说明 CentOS 7.6 Docker 18.09.5 Docker Compose 1.25.0 ELK 7.5.1 Filebeat 7.5.1 docker-compose 文件 version: "3" services: es-master: containe

  • Docker Compose+Nestjs构建Dapr Redis发布订阅分布式应用

    目录 Dapr(分布式应用程序运行时)介绍 实战 Dapr 的 Redis 发布/订阅应用 1. 创建项目 2. 创建 Dapr Placement 服务 3. 创建 Redis Publish 服务 4. 创建 Dapr Pub-Sub 组件 5. 创建 Redis Dapr Sidecar 6. 创建 NestJS Server 7. 为 NestJS 订阅服务器创建 Dockerfile 8. 将 NestJS 订阅服务添加到 docker-compose 文件 9. 创建 Dapr 订阅

  • docker maven plugin快速部署微服务的详细流程

    目录 一.前置条件 二.部署方法 1.开放远程部署端口 3.修改application文件 4.打包上传并创建镜像 5.启动容器 三.总结 一.前置条件 linux下装好docker并启动 1.使用国内 daocloud 一键安装命令 curl -sSL https://get.daocloud.io/docker | sh 2.启动docker systemctl start docker.service 二.部署方法 1.开放远程部署端口 <1>修改 docker 的配置文件 /lib/s

  • Docker 部署Mysql 服务和Redis 服务的方法

    Docker 部署Mysql 服务的方法 1. 拉取Mysql 5.6最新版本镜像 sudo docker pull mysql:5.6 2. 查看Mysql 镜像 sudo docker images 3. 在home目录下创建需要映射的目录: mkdir -p /home/computer/project/mysql/{conf,log,data} 4. 运行容器 duso docker run -p 53603:3306 --name iot-mysql \ -v /home/comput

  • 详解docker compose 用法

    docker compose的使用场景 我们开发的时候,一个应用往往依赖多个服务.采用传统的docker run方式,要挨个启动多个服务,甚至需要配置对应的网络,过程比较繁琐,很不方便. docker compose旨在通过将多服务的构建和依赖关系都编写在docker-compose.yml中,通过docker-compose命令,即可完成对整个服务集群的启动,关闭等操作. 一个基本的demo演示 demo的功能是一个简单的python程序,暴露一个web服务.该服务用于统计当前服务被访问的次数

  • 解决使用Docker Compose管理容器的问题

    在Docker的设计中,一个容器只运行一个应用.但是目前的绝大多数应用系统都不是一个应用就可以组成的.虽然之前提到了容器间互相连接.交换数据的方法,使用这些方法也确实能搭建起一个完整应用系统的容器群.但是,需要执行很多命令,需要考虑很多应用和容器间的关系,而Docker Compose正是为了解决这些复杂的操作. 解决容器管理问题 就拿最简单的例⼦来说吧,如果我们要为我们的应⽤容器准备⼀个 MySQL 容器和⼀个 Redis 容器,那么在每次启动时,我们先要将 MySQL 容器和 Redis 容

  • Docker compose配置文件写法及命令使用示例

    目录 docker-compose配置文件写法 docker-compose的命令 示例 docker-compose配置文件写法 命令 用途 build 本地创建镜像 command 覆盖缺省命令 depends_on 索拉容器 ports 暴露端口 volumes 卷 environment 环境变量 image pull镜像 docker-compose的命令 命令 用途 build [serviceName] 进行组合构建 [单个服务] up [-d] 创建并且启动容器 [后台启动] s

  • Docker Compose部署微服务项目上线功能

    目录 一.需求说明 二.效果图 三.项目结构 四.核心源码 ️Java依赖与接口 ️Docker相关源码 五.部署项目 小结 一.需求说明 编写一个SpringBoot + Redis 的微服务项目,并提供 hello接口,每访问一次接口,计数器+1 二.效果图 三.项目结构 目录说明 docker-compose.yml :项目的启动文件,配置编排等 Dockerfile:项目上线所需要的依赖,以及启动方式 四.核心源码 ️Java依赖与接口 依赖文件 pom.xml <?xml versio

随机推荐