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
可能是询问服务器配置的更直接方式。
我想通过自定义 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
可能是询问服务器配置的更直接方式。