我想在docker容器中设置master-slave redis;我想在slave的容器中使用redis.conf;
测试环境:win7 + Docker快速启动终端;
在开始之前,创建三个文件redis-6379,redis-6380,redis-6381到这个路径:'〜/ Desktop / redis /';然后创建redis.conf foreach文件;(使用官方配置);然后使用Docker快速入门运行命令:
cp -rf ~/Desktop/redis/ /usr/local/
我在以下步骤中这样做:
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仍然是主角色;
然后,我尝试了这种方式,它有效:
docker run --name redis-6381 -p 6381:6379 -d redis redis-server slaveof 172.17.0.2 6379
那么,为什么redis.conf不起作用?
答案 0 :(得分:1)
您需要使用-v ~/Desktop/redis/redis-6381/redis.conf:/usr/local/etc/redis/redis.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
时,主机路径不会转换内部泊坞窗,因此会创建并映射空白文件。