redis 容器的自定义配置

Custom configuration for redis container

我想通过自定义 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 端口本身和容器端口有区别还是我的问题出在哪里?

标准 Redis 映像 Docker文件包含行

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 可能是询问服务器配置的更直接方式。