为什么Docker中的Redis需要将daemonize设置为no?

pet*_*rie 4 redis docker

我按照下面的 cmd 运行我的 Docker 容器,但该容器无法工作。当我将配置更改daemonize yesdaemonize noin时redis-6379.conf,它起作用了!谁能告诉我为什么?

\n\n
\xe2\x9e\x9c  ls\n6379.log  docker-entrypoint.sh  dump.rdb  redis-6379.conf  \n\xe2\x9e\x9c  cat redis-6379.conf\nport 6379\ndaemonize yes\nlogfile "6379.log"\ndbfilename "dump-6379.rdb"\ndir "/data/"\n\xe2\x9e\x9c  docker run -p 6379:6379 -v /root/redis-sentinel:/data --name redis-6379 -d redis ./redis-6379.conf\n\xe2\x9e\x9c  docker ps\nCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES\n
Run Code Online (Sandbox Code Playgroud)\n

cri*_*007 8

当您妖魔化 Redis 进程时,最后一个 Docker exec 进程(启动 Redis 的进程)将无事可做,因此该进程将退出,容器也会自行结束。

如果你想保持容器正常运行,你可以不妖魔化它,也可以,但你必须做一些其他的事情,比如 call wait,或者更好的是,tail -fredis 日志。但是,这样Redis进程就不会是PID 1,因此当容器停止时Redis将无法正常关闭