第一种是不持久化配置文件,如下所示,使用redis-server --requirepass "123456" --appendonly yes
进行相关的配置并启动。
docker run -d --name one-Redis \
-p 6379:6379 \
-v Redis_data:/data \
redis:4.0.9 \
redis-server --requirepass "123456" --appendonly yes
第二种是使用配置文件,自己在/home/user/docker/redis/redis.conf
设置好相关的配置,通过-v /home/user/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf
将配置导入 container,然后通过redis-server /usr/local/etc/redis/redis.conf
启动。
docker run -d --name another-Redis \
-p 6379:6379 \
-v Redis_data:/data \
-v /home/user/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf \
redis:4.0.9 \
redis-server /usr/local/etc/redis/redis.conf
我个人觉得,第一种做法移植性很好,无需自己维护 docker host 中的配置。我自己并没有使用 docker 很久,所以想听听大家的意见。
还有一个问题,有没有什么情况是只能使用第二种方式的呢?
1
6IbA2bj5ip3tK49j 2020-08-24 13:36:59 +08:00
当你需要配置 50 个参数时。
|
2
Acoffice 2020-08-24 14:02:02 +08:00
1. 不需要更改 redis 配置的时候.
2. 要更改 redis 配置的时候. |
3
dolphintwo 2020-08-24 14:04:11 +08:00
小孩子才做选择题,我选择 compose
|
4
lhx2008 2020-08-24 14:16:47 +08:00 via Android
k8s 就是用 tmpfs 挂配置进容器的,问题不大
|
5
Niphor 2020-08-24 14:32:44 +08:00
改个配置要删一次容器么?兄弟?
|
6
byzf 2020-08-24 16:19:03 +08:00 1
方法 2 依赖两个脚本, 一个 docker 启动脚本一个 redis.conf, 两个脚本还互相依赖, 比如 redis 开放的端口和 docker forward 的端口是互相依赖的, 分开在两个文件中配置就会带来各种问题. 用的久了必然选 1.
另外有些人可能以为 2 可以在不重启 container 的情况下重载配置. 实际上操作起来比较麻烦, 因为修改 host 上的 redis.conf 的时候, 很多情况下会改变 redis.conf 的 inode, 而 container 内部的配置文件不会跟着一起改变, 这时还是要重启 container. @xgfan 50 个参数也能用 1, 因为你启动 docker 用的是另一个脚本. |
7
Trim21 2020-08-24 16:44:28 +08:00 via iPhone
跑单个 docker 镜像我也选择写个 compose, 要改 command 的时候一个参数都嫌多,要改 env50 个也不嫌多
|
8
muzuiget 2020-08-24 16:47:25 +08:00
我用第一种,配置也算是代码,把 redis.conf 用 COPY 指令复制进去就是了,省得再次映射到真机上。
哪怕 build 了第一种的 image,要调试修改配置文件,总是可以 run 一个 bash 来手动执行 redis 命令。 |