使用docker/docker-compose通过自定义的redis.conf文件启动redis 7.2.3,附上docker-compose.yml的redis配置

这篇具有很好参考价值的文章主要介绍了使用docker/docker-compose通过自定义的redis.conf文件启动redis 7.2.3,附上docker-compose.yml的redis配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.复制以及使用自定义的redis.conf文件

1.在官网拷贝对应版本的配置文件内容新建redis.conf文件进行粘贴。(推荐)

2.也可以去官网下载对应版本的redis的tar.gz包,解压后在根目录下找到redis.conf文件复制也可也可。

二.配置redis.conf文件(这里有个小坑)

1.注释掉bind 127.0.0.1 -::1,不然外部无法连接到redis

2.将daemonize改为no,也就是后台启动关闭(小坑)

3.将protected-mode改为no,也就是关闭保护模式

4.appendonly改为yes,开启aof持久化(可选)

5.放开requirepass的注释,将原来的foobared改为你自己的密码(可选)

三.docker-compose.yml文件配置

四.关于Memory overcommit的警告


一.复制以及使用自定义的redis.conf文件

使用docker或者docker-compose启动redis时,如果想用自定义的redis.conf文件启动redis,有两种方式获取默认的redis.conf文件。

1.在官网拷贝对应版本的配置文件内容新建redis.conf文件进行粘贴。(推荐)

官网配置文件地址:

Redis configuration | Redis

需要点击你的redis对应的版本去复制,这里我用的是redis7.2.3,所以点击7.2的版本,点进去复制全部即可。

mac docker redis7.2.3,docker,redis

mac docker redis7.2.3,docker,redis

2.也可以去官网下载对应版本的redis的tar.gz包,解压后在根目录下找到redis.conf文件复制也可也可。

 官网所有版本redis下载地址:

Index of /releases/

mac docker redis7.2.3,docker,redis

mac docker redis7.2.3,docker,redis

推荐第一种方法,方便省事,并且第二种方法有些特殊的镜像版本可能不知道对应哪个版本的tar.gz包。

不管哪种方式,注意一定要对应版本,不然启动会报配置文件相关的错误。

然后将此文件放置在你想挂载的目录下进行挂载,可以直接将redis.conf文件存放目录挂载(目录挂载时容器内的路径最好是一个新创建的路径,不然用容器内已有目录进行挂载那这个目录下其他的文件或者目录就没了),或者也可以直接挂载到conf文件就不会影响到其他文件或者目录(但是配合sentinel搭建集群的时候就不能挂载到文件,会没有权限写入的,需要挂载到目录),挂载好后按照下面的配置进行修改,然后启动时在docker run命令或者docker-compose文件中command参数部分中加上redis-server <你的容器内conf文件存放路径>/redis.conf。

二.配置redis.conf文件(这里有个小坑)

redis不管是常规安装或者docker/docker-compose安装配置除了第2点都一样,小坑就在第2点。

1.注释掉bind 127.0.0.1 -::1,不然外部无法连接到redis

这个选项会绑定连接redis的ip,127.0.0.1代表本地,只能本机也就是容器内部使用redis,所以外部要连接的话需要注释这个选项,或者有需要的也可以将ip改为需要固定连接的ip,::1代表的是允许ipv6连接。

mac docker redis7.2.3,docker,redis

2.将daemonize改为no,也就是后台启动关闭(小坑)

如果是linux常规安装是要将这个选项改成yes的,因为要后台启动,但是如果是以docker容器的方式启动,这个选项必须改为no,否则会跟docker的-d或者docker compose的后台启动冲突,导致容器启动不起来,并且用docker logs 看不到任何日志,千万记住redis的docker与常规安装的这个选项是反的。

3.将protected-mode改为no,也就是关闭保护模式

保护模式开启只会允许本地的回环连接,不允许外部访问,关闭才能从外部连接redis。

4.appendonly改为yes,开启aof持久化(可选)

aof持久化选项,最好开启。

5.放开requirepass的注释,将原来的foobared改为你自己的密码(可选)

这一步是设置redis的密码,注释就是无密码,最好设置一下。

mac docker redis7.2.3,docker,redis

三.docker-compose.yml文件配置

这是我自己用的redis的docker-compose.yml配置,如果发现有错误请指正。

  redis:
    container_name: redis
    image: redis:7.2.3
    privileged: true
    command: redis-server /etc/redis/redis.conf
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "6379:6379"
    restart: always
    networks:
      - learn_default
    logging:
      driver: "json-file"
      options:
        max-size: "20m"
        max-file: "3"    

privileged: true是为了获取完整权限。 

挂载- /app/redis/data:/data是为了同步redis的持久化数据。

为什么数据是在/data目录?因为redis的默认数据保存目录(rdb与aof数据保存都是在这个文件夹下)是在执行redis-server命令时当前所处的目录下,可以在默认的redis.conf文件中看到,dir这一项就是配置数据文件的保存位置,默认的是./,这个.就是在执行redis-serve命令时所处的目录。而redis镜像启动的容器的工作目录就是/data目录,redis-server命令就是在这个目录下运行的,所以自然而然就是/data目录。

mac docker redis7.2.3,docker,redismac docker redis7.2.3,docker,redis

当然你也可以指定目录,修改dir后面的路径即可,注意如果是不存在的目录,redis不会自己创建目录需要手动创建。如果是不存在的目录,想在容器启动后使用docker exec进入容器mkdir新建目录然后再重启使修改的新目录生效这种方式来修改数据保存位置的话是不行的,redis启动不了,会报权限错误访问被拒绝。解决方式是在command的redis-server命令执行之前先执行mkdir命令创建你想指定的目录,重新创建一个容器即可,而且记得要带上privileged获取权限。不过属实是没有这个必要,使用默认的即可。

挂载- /etc/localtime:/etc/localtime:ro是为了让容器与主机之间的时间日期进行完全同步,因为docker容器与宿主机日期时间会存在同步问题,最好保持一致,:ro是只读权限,因为这是系统文件所以只给只读权限。

restart: always是为了自行启动。

networks是加入指定的网络中。

logging是跟容器日志有关的配置,driver指定日志存储机制,max-size为单个日志最大容量,max-file为最多的日志文件个数。

四.关于Memory overcommit的警告

本来在程序员眼里警告基本是不存在的[手动狗头],之所以我会注意到这个警告,是因为上面的第二点我写成了yes,一直启动不起来,docker logs就只报了这个警告,后面查了半天解决了这个警告,发现还是启动不起来,并且日志也没有。后面百度了才发现是由于daemonize设置了yes的原因,突然想起好像常规安装跟docker安装是反的,后面改回来之后就好了,所以这里千万要注意。晕死,浪费半天力气。不过这个警告解决还有点曲折,所以分享一下。

启动redis容器后时,用docker logs -f命令可以发现出现了如下的警告 

WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. 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.
 

翻译过来就是

警告必须启用内存过度使用!如果没有它,后台保存或复制可能会在内存不足的情况下失败。如果被禁用,它也可能在没有内存不足的情况下导致故障,请参阅https://github.com/jemalloc/jemalloc/issues/1328.若要解决此问题,请将“vm.overcommit_memory=1”添加到/etc/sysctl.conf,然后重新启动或运行命令“sysctl vm.overommit_memory=1”以使其生效。

redis给出了解决方案,就是在/etc目录下的sysctl.conf文件中添加vm.overcommit_memory=1,并且重新启动或运行命令“sysctl vm.overommit_memory=1”以使其生效。刚开始我一直以为要容器内部修改redis容器内的/etc/sysctl.conf文件,但是容器内部的/etc目录下是没有sysctl.conf文件的,并且容器内部也没有sysctl命令。

后面我在gitbub上看到了有人说这个问题,原来单个容器时无法修改这个选项的,需要在宿主机上修改/etc/sysctl.conf,然后重新启动或运行命令“sysctl vm.overommit_memory=1”以使其生效。

原帖地址如下:

Warning about memory overcommit at start up · Issue #346 · docker-library/redis · GitHub

mac docker redis7.2.3,docker,redis后面在宿主机上的/etc目录下修改了sysctl.conf文件,并且执行了sysctl vm.overommit_memory=1命令,然后删掉原来的容器重新启动了一个容器,这时日志就没有这个警告了。

后面还有一些其他警告,懒得去管了,既然跑起来了那就是不存在[手动狗头],有需要的自行查询。文章来源地址https://www.toymoban.com/news/detail-779199.html

到了这里,关于使用docker/docker-compose通过自定义的redis.conf文件启动redis 7.2.3,附上docker-compose.yml的redis配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker-compose搭建redis服务

    2024年02月14日
    浏览(47)
  • docker-compose设置redis密码

    要在 docker-compose.yml 文件中设置 Redis 的密码,你需要在 services 块中添加一个 environment 子块,并在其中添加一个 REDIS_PASSWORD 变量。例如: 注意:这是在使用 Docker Compose 版本 3.7 或更高版本时的语法。如果你使用的是更早的版本,可能需要使用不同的语法。你可以查看 Docker

    2024年02月11日
    浏览(73)
  • docker-compose 中设置redis密码

    在 docker-compose.yml 文件中,可以使用 environment 字段为 Redis 设置密码,如下所示: 注意,在这种情况下,密码是在启动 Redis 服务时设置的,并且仅对启动的 Redis 服务实例有效。 如果要持久化 Redis 密码,则需要在 Redis 配置文件中设置密码,然后使用 Docker 容器映射该配置文件

    2024年02月11日
    浏览(38)
  • 如何通过docker-compose部署ES集群

    一、概述 Linux系统搭建ES集群的方式有很多种,其中通过docker-compose进行安装最为方便。 二、准备 1、配置虚拟机 1.1、设置IP 将虚拟机IP设置为192.168.1.100; 1.2、设置内存 将虚拟机内存设置为4G,内存太小可能导致某个ES节点无法正常运行; 1.3、修改limits.conf limits.conf文件可以

    2024年02月16日
    浏览(45)
  • 如何通过docker-compose部署单节点ES

    一、概述 Linux系统搭建单节点ES的方式有很多种,其中通过docker-compose进行安装最为方便。 二、准备 1、配置虚拟机 1.1、设置IP 将虚拟机IP设置为192.168.1.100; 1.2、设置内存 将虚拟机内存设置为4G,内存太小可能导致ES无法正常运行; 1.3、修改limits.conf limits.conf文件可以设置用

    2024年02月15日
    浏览(53)
  • yapi通过docker-compose安装遇到的问题

    docker无法访问外部网络 https://www.jianshu.com/p/f3ce460625fb iptables: No chain/target/match by that name service docker restart getaddrinfo EAI_AGAIN registry.npmjs.org docker内网络不通,默认docker通过桥接模式连接到宿主机,参考问题1进行解决 docker logs container_id 查看日志 https://blog.csdn.net/hshloveyy/article/de

    2024年02月06日
    浏览(47)
  • 通过 docker-compose 快速部署 Hive 详细教程

    其实通过 docker-compose 部署 hive 是在继上篇文章 Hadoop 部署的基础之上叠加的,Hive 做为最常用的数仓服务,所以是有必要进行集成的,感兴趣的小伙伴请认真阅读我以下内容,通过 docker-compose 部署的服务主要是用最少的资源和时间成本快速部署服务,方便小伙伴学习、测试、

    2024年02月09日
    浏览(48)
  • 【开源电商网站】(2),使用docker-compose和dockerfile进行配置,设置自定义的镜像,安装插件,增加汉化包,支持中文界面汉化。

    相关内容: https://blog.csdn.net/freewebsys/category_12461196.html 原文地址: https://blog.csdn.net/freewebsys/article/details/133666433 包括以下运行的详细代码: https://gitee.com/study-demo-all/oscommerce2-study 视频教程: https://www.bilibili.com/video/BV1kB4y1Z7HS/?vd_source=4b290247452adda4e56d84b659b0c8a2 首先是镜像的选择

    2024年02月05日
    浏览(53)
  • 通过 docker-compose 快速部署 MySQL保姆级教程

    MySQL 是一种开源的关系型数据库管理系统( RDBMS ),以其快速、可靠和易于使用而受到广泛的欢迎。 MySQL 使用 SQL (结构化查询语言)进行查询、管理和操作数据。 MySQL 是一种跨平台的数据库,支持在各种操作系统(如 Windows、Linux、MacOS 等)上运行。 MySQL 中的重要概念包括

    2024年02月04日
    浏览(48)
  • docker+redis哨兵模式(一主二从三哨兵)- docker-compose

    一、docker-compose 安装: sudo apt-get update   #安装最新的docke-ce sudo apt-get install  docker-ce   # 下载最新的docker-compose curl -L https://github.com/docker/compose/releases/download/1.25.0-rc4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose   # 修改docker-compose 权限 chmod +x /usr/local/bin/docker-compose

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包