【问题标题】:Redis in docker container with custom file redis.conf doesn't work带有自定义文件 redis.conf 的 docker 容器中的 Redis 不起作用
【发布时间】:2018-02-02 00:44:07
【问题描述】:

我想在docker容器中设置主从redis;我想在slave的容器中使用redis.conf;

测试环境:win7+Docker快速启动终端;

开始前,创建三个文件redis-6379、redis-6380、redis-6381到这个路径:'~/Desktop/redis/';然后创建redis.conf foreach文件;(使用官方配置);然后使用Docker 快速入门运行命令:

cp -rf ~/Desktop/redis/ /usr/local/

files content

我在以下步骤中执行此操作:

1、修改redis.conf (redis-6381/redis-6380)

slaveof 172.17.0.2 6379

2、指定这个redis.conf

docker run -v /usr/local/redis/redis-6381/redis.conf:/usr/local/etc/redis/redis.conf --name redis-6381 -p 6381:6379 -d redis redis-server  /usr/local/etc/redis/redis.conf

docker logs 给我:配置加载;其实redis.conf没有效果; info replication show,这个redis仍然是master角色;

然后,我尝试了这种方式,它可以工作:

docker run --name redis-6381 -p 6381:6379 -d redis redis-server slaveof 172.17.0.2 6379

那么,为什么 redis.conf 不能工作?

【问题讨论】:

  • 进入容器,看看/usr/local/etc/redis/redis.conf是否有slaveof的值?
  • '/usr/local/etc/redis/redis.conf' 为空;
  • 这意味着您的主机上的/usr/local/redis/redis-6381/redis.conf 不存在
  • 这就是问题所在;我在我的主机上使用命令 'vim /usr/local/redis/redis-6381/redis.conf`;这个文件存在,内容正确;
  • 你在用什么?用于 mac 的 Docker ?添加您的基础架构详细信息

标签: docker redis


【解决方案1】:

你需要使用 -v ~/Desktop/redis/redis-6381/redis.conf:/usr/local/etc/redis/r‌​edis.conf 代替 /usr/local`

问题是当你在 Windows 上工作时,Docker 会自动将你的一些驱动器共享给运行 docker 的 VM。所以你的路径会起作用。

但 MingW 可能会在其他地方托管 /usr/local 文件夹,并向您展示它安装在 /usr/ 上。我不使用 Windows,因此无法为您确认。

当您使用 -v /usr/local/redis/redis-6381/redis.conf:/usr/local/etc/redis/redis.conf 时,主机路径不会转换内部 docker,因此会创建并映射一个空白文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 2018-09-21
    • 2020-10-02
    • 2011-06-09
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多