【问题标题】:Custom configuration for redis containerredis容器的自定义配置
【发布时间】:2021-09-07 17:05:07
【问题描述】:

我想通过自定义 conf 文件调整我的 redis 设置,并遵循实施文档。使用以下命令运行我的容器不会引发错误 - 到目前为止一切顺利。

docker run --name redis-container --net redis -v .../redis:/etc/redis -d redis redis-server /etc/redis/redis.conf

为了检查我的配置文件是否被读取,我将默认的port 6379 切换为port 6380,但是通过docker ps 查看我的 docker 端口显示默认的 6379 作为我的端口。 redis端口本身和容器端口有区别还是我的问题出在哪里?

【问题讨论】:

    标签: docker redis containers


    【解决方案1】:

    标准的 Redis 镜像 Dockerfile 包含这一行

    EXPOSE 6379
    

    一旦以这种方式暴露了端口,就无法取消暴露它。暴露端口在现代 Docker 中几乎没有实际效果,但最明显的是 6379/tcp 将显示在每个暴露端口的 docker ps 输出中,即使它没有单独发布 (docker run -p)。无法从docker ps 输出中删除此端口号。

    Docker 的端口系统(EXPOSE 指令和docker run -p 选项)与容器内的应用程序实际执行的操作有点脱节。在您的情况下,容器配置为公开端口 6379,但该进程实际上正在侦听端口 6380; Docker 无法知道这些不匹配。更改应用程序配置不会更改容器配置,反之亦然

    实际上,您通常不需要更改应用程序端口。由于这个 Redis 将是唯一运行在其容器及其对应的隔离网络命名空间中的东西,因此它不能与主机上或其他容器中的其他 Redis 冲突。如果需要在主机上重新映射,可以为-p使用不同的端口号;第二个数字必须与进程正在侦听的内容匹配(Docker 无法自动检测或检查),但第一个数字可以是任何端口。

    docker run -p 6380:6379 ... redis
    

    如果您尝试检查您的配置是否生效,通过redis-cli 运行CONFIG GET 可能是询问服务器配置的更直接方式。

    【讨论】:

    • 啊,好吧。所以我的猜测有点对。感谢您解释问题的具体原因 - 让我更好地了解了这个过程。
    猜你喜欢
    • 2021-09-17
    • 2018-06-14
    • 2020-03-29
    • 2020-10-02
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多