V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JasonLaw
V2EX  ›  Docker

Docker container 持久化配置文件是个好的做法吗?

  •  
  •   JasonLaw · 2020-08-24 12:26:07 +08:00 · 1808 次点击
    这是一个创建于 1312 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一种是不持久化配置文件,如下所示,使用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 很久,所以想听听大家的意见。

    还有一个问题,有没有什么情况是只能使用第二种方式的呢?

    8 条回复    2020-08-24 16:47:25 +08:00
    xgfan
        1
    xgfan  
       2020-08-24 13:36:59 +08:00
    当你需要配置 50 个参数时。
    Acoffice
        2
    Acoffice  
       2020-08-24 14:02:02 +08:00
    1. 不需要更改 redis 配置的时候.
    2. 要更改 redis 配置的时候.
    dolphintwo
        3
    dolphintwo  
       2020-08-24 14:04:11 +08:00
    小孩子才做选择题,我选择 compose
    lhx2008
        4
    lhx2008  
       2020-08-24 14:16:47 +08:00 via Android
    k8s 就是用 tmpfs 挂配置进容器的,问题不大
    Niphor
        5
    Niphor  
       2020-08-24 14:32:44 +08:00
    改个配置要删一次容器么?兄弟?
    byzf
        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 用的是另一个脚本.
    Trim21
        7
    Trim21  
       2020-08-24 16:44:28 +08:00 via iPhone
    跑单个 docker 镜像我也选择写个 compose, 要改 command 的时候一个参数都嫌多,要改 env50 个也不嫌多
    muzuiget
        8
    muzuiget  
       2020-08-24 16:47:25 +08:00
    我用第一种,配置也算是代码,把 redis.conf 用 COPY 指令复制进去就是了,省得再次映射到真机上。

    哪怕 build 了第一种的 image,要调试修改配置文件,总是可以 run 一个 bash 来手动执行 redis 命令。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3322 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 13:21 · PVG 21:21 · LAX 06:21 · JFK 09:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.