如何在 Docker 中部署和运行 Redis?
Redis 是一个开源的内存数据结构存储,可用作数据库、缓存或消息代理。它以高性能和低延迟著称,是实时应用程序的热门选择。
另一方面,Docker 是一个容器化平台,允许开发者将应用程序打包到容器中,以便在任何平台上的任何位置运行。与传统虚拟机相比,容器轻量级、部署速度快且占用空间小。
部署准备
在您的计算机上安装 Docker
在 Docker 中部署 Redis 之前,您需要在您的计算机上安装 Docker。为此,请访问 Docker 官方网站并下载适合您操作系统的版本。安装过程可能需要几分钟,但完成后,您应该已经启动并运行了最新版本的 Docker。
从 Docker Hub 下载 Redis 镜像
安装 Docker 后,您可以先从 Docker Hub 下载 Redis 镜像。操作非常简单 - 只需打开终端或命令提示符窗口,然后输入以下命令即可:
docker pull redis
这会将 Docker Hub 上可用的最新版本 Redis 下载到您的本地容器镜像仓库中。
创建用于自定义配置的 Dockerfile
虽然可以使用默认配置运行 Redis 容器,但使用自定义配置可以优化其性能并使其更安全。要创建自定义配置,首先在工作目录中创建一个名为"Dockerfile"的新文件。
在此文件中,将基础镜像指定为"redis"。然后添加您想要使用 COPY 命令的其他配置文件。
指定需要使用 RUN 命令运行的其他命令。例如:
FROM redis COPY redis.conf /usr/local/etc/redis/redis.conf CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
这会将您的自定义 Redis 配置文件(名为"redis.conf")复制到位于 /usr/local/etc/redis/ 的容器中。
它将根据此处指定的 CMD 命令使用此自定义配置文件运行 Redis。通过有效地执行这些步骤,您已经为在 Docker 容器中无缝部署和运行 Redis 做好了充分的准备。
在 Docker 中部署 Redis
使用默认配置运行 Redis 容器
在 Docker 容器中部署 Redis 最简单的方法是使用 Docker Hub 上的官方 Redis 镜像。要使用默认配置运行容器,请使用以下命令 -
docker run --name my-redis -d redis
此命令使用最新版本的 Redis 镜像以分离模式启动一个名为"my-redis"的新容器。默认配置将 Redis 设置为单节点服务器。
要检查容器是否正在运行,请使用以下命令 -
docker ps
您应该会在正在运行的容器中看到"my-redis"。您还可以通过运行以下命令检查容器的日志:-
docker logs my-redis
这将显示 Redis 服务器生成的任何输出。
使用环境变量或配置文件自定义设置 Redis 容器
要自定义 Redis 部署,您可以使用环境变量或配置文件将配置选项传递给容器。使用环境变量更方便进行小规模更改,而使用配置文件则允许您一次配置多个选项并在多个实例之间重复使用它们。
例如,要设置用于身份验证的自定义密码,您可以使用如下环境变量:-
docker run --name my-redis -d -e REDIS_PASSWORD=mypassword redis
要使用配置文件一次配置多个选项,请创建一个包含所需设置的配置文件(例如 `myconfig.conf`),并将其作为卷挂载到容器内,如下所示:-
docker run --name my-redis -d -v /path/to/myconfig.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf
在 docker 中与 Redis 交互Docker
使用 redis-cli 与容器化的 Redis 实例交互
在 Docker 容器中成功部署 Redis 后,务必验证其是否正常运行,并与 Redis 交互以执行设置和检索键值对等任务。实现此操作的一种方法是使用 redis-cli 命令行界面工具。要使用此工具,您需要启动一个新的终端窗口并运行以下命令 -
docker exec -it redis-cli
此命令将启动与容器化的 Redis 实例的交互式会话,使您可以像在本地 Redis 实例上一样执行 Redis 命令。
例如,您可以使用以下命令设置一个键 -
set mykey "hello world"
然后,您可以使用以下命令检索该值 -
get mykey
从主机上运行的应用程序连接到容器化的 Redis 实例
除了通过 redis-cli 工具与容器化的 Redis 实例交互之外,在主机上(Docker 之外)运行的应用程序也可以连接并交互容器化的 Redis 实例。为此,您需要通过运行以下命令获取 Docker 主机网络的 IP 地址 -
docker network inspect bridge
获取此 IP 地址后,只需在应用程序代码中使用它,就像它是访问外部服务的任何其他 IP 地址一样
请注意,在尝试连接时,还需要考虑 docker run 或 docker-compose.yml 文件中定义的任何端口映射。例如,如果您的 Docker 主机网络的 IP 地址为 172.17.0.1,并且您将容器中的端口 6379 映射到主机上的端口 6380,则您可以使用以下代码从应用程序连接到 Redis -
python import redis
r = redis.StrictRedis(host='172.17.0.1', port=6380, db=0) r.set('mykey', 'hello world')
在此示例中,我们使用 Python Redis 库连接到 Redis 并设置键值对。但是,任何带有 Redis 客户端库的编程语言都可以以类似的方式与在 Docker 中运行的 Redis 容器化实例进行交互。
在 Docker 中运行 Redis 的最佳实践
通过内存限制、持久性和网络设置优化性能
在 Docker 容器中运行 Redis 时,优化实例的性能非常重要。这可以通过配置内存限制、持久性和网络设置来实现。
为了优化内存使用率,您可以使用"maxmemory"设置来配置 Redis 允许使用的最大内存量。如果没有此设置,Redis 将继续分配内存,直到耗尽为止,这可能导致性能下降甚至崩溃。
使用身份验证和加密保护您的部署
在生产环境中,敏感数据可能存储或通过网络传输,在 Docker 容器中部署 Redis 时,务必设置身份验证和加密,以确保部署安全。Redis 支持基于密码的身份验证机制,客户端必须提供密码才能在 Redis 上执行任何命令。
要在容器化的 Redis 实例中启用身份验证,只需在配置文件中设置身份验证密码,并在使用 docker run 命令启动容器时提供该密码即可。您还可以通过在客户端(即应用程序)和服务器端(即 Redis 实例)同时启用 TLS,通过 SSL/TLS 加密来保护客户端应用程序与容器化的 Redis 实例之间的通信。
结论
在本文中,我们探讨了在 Docker 中部署和运行 Redis 的优势。我们已经了解了在 Docker 中设置 Redis 容器是多么容易,以及它如何提高可扩展性、灵活性和易于管理。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

