如何以及为什么要在 Docker 中运行 Redis
已发表: 2023-05-02Redis 是一个高度可用的内存数据库。 其磁盘持久性键值数据存储非常适合多种高可用性用途。
另一方面,Docker 是一种用于容器化应用程序和服务、隔离它们的环境并允许它们单独运行的工具。 您可以将 Docker 用作具有所有必要依赖项、配置、脚本等的应用程序和服务的包管理器。称为 Dockerfile 的脚本放置在 Docker 容器内,并允许您将容器作为单个实体进行部署。
本文教您如何有效地使用这两种开源技术。 它还涉及为什么在 Docker 容器中运行 Redis 集群至关重要,以及与在虚拟机或裸机服务器上运行 Redis 集群相比,这样做的优势和好处。
Redis的各种用途
Redis 有几个优点。 它最受欢迎的用途包括:
- 分布式,键值数据库缓存
- 消息代理
- 持久对象缓存服务器
此外,Redis 可以支持多种数据类型和结构,使其适合用作应用程序的主要和次要数据库层。 它还支持列表、流、散列、集合等。
但是,您可以通过将 Redis 容器化来进一步发挥其优势。
Redis 最好放在容器中
Redis 是 Docker 注册表中最受欢迎的 Docker 映像之一,下载量超过 10 亿次。 容器化 Redis 应用程序的原因是为了获得 Docker 的好处和社区对最常见的 Redis 用例的支持。
Redis Docker 镜像有一个开源社区,可以创建和维护清晰的文档。 最重要的是,Docker 非常可靠,易于使用且具有灵活性。
使用方便
Docker 隔离容器内运行的应用程序和服务的环境。 隔离意味着您可以打包、构建和运送 Redis 映像,无论主机操作系统如何,这都可以轻松地在 Docker 中开发和运行 Redis 应用程序。 此外,Docker Desktop 简化了一致的本地开发环境的设置,这对大型团队特别有用。
安全:
您可以使用容器内的 Redis 扫描安全漏洞。 Docker 使用 Snyk,这是一种提供 Docker 镜像安全可见性的工具。 它扫描 Docker 容器,并在图像损坏时提供详细信息和补救措施。 Docker 还可以生成软件物料清单 (SBOM),用于扫描构建容器映像时使用的所有依赖项,尽管它仍处于试验阶段。
灵活性
Docker 适用于大多数基于 Unix 和 Windows 的操作系统和应用程序。 由于您使用容器将软件与其环境隔离开来,以确保它适用于所有系统,因此 Redis 应用程序和服务始终可以在基础架构下运行。
可靠性
Docker 允许您在任何环境中可靠地运行任何容器化工作负载。 Redis 在 Docker 中是可靠的,因为 Docker 容器会定期拍摄容器映像的快照,允许您在数据库损坏或损坏的情况下恢复到这些快照。 您还可以通过在容器内挂载包含 Redis 数据库文件的目录来创建 Docker 卷。
Docker 卷有助于保护容器免受任何形式的意外数据丢失。 但是,需要注意的是 Docker 卷不包含图像快照。 您必须定期手动保存或备份 Redis 数据库文件中的数据。
如何在 Docker 中使用 Redis
要将 Redis 存储放入 Docker 容器中,目标环境中必须有 Docker。 以下说明向您展示了如何在 Windows 上安装 Docker。
您可以按照 Docker 网站上针对 Unix 或基于 Unix 的操作系统的指南进行操作。 安装和配置后,您可以在 Docker 容器内创建网络。 然后就可以安装Redis并创建数据库了。 最后,您可以对 Redis 数据库执行操作。
首先,在您的操作系统上安装 Docker。 或者,导航到 Docker Hub 并创建一个帐户。 您需要一个帐户来创建和发布图像。
创建帐户后,登录 Docker Hub 并下载操作系统的最新版本的 Docker Desktop。
安装过程完成后,转到终端窗口查看 Docker 引擎是否准备好运行并输入以下命令:
docker --version
然后输入: docker-compose --version
。
Compose 是一种使用 YAML 文件定义和运行多容器 Docker 应用程序的工具,您可以使用它来配置应用程序服务。
您可以使用以下代码运行 Dockerized Redis 以验证 Docker 引擎已启动并正在运行。 此示例运行来自 Docker Hub 的 Redis 映像并将其命名为 my-redis-container 。
docker run --name my-redis-container -d redis
因为本地没有镜像,所以 Docker 从 Docker Hub 拉取 Redis 镜像。
现在,您可以打开 Docker Desktop 以确认它已拉取 Redis 映像。 在仪表板上,单击左侧面板上的图像。
现在,您可以创建一个网络。 请注意,Docker 驱动程序使用 bridge 或 overlay 内置网络驱动程序来创建 Docker 网络。 您还可以安装和使用第三方网络驱动程序。
不同之处在于桥接网络在单个 Docker 引擎安装上是隔离的,而覆盖网络跨越多个 Docker 主机,每个主机都运行一个引擎。
类型:
docker network create -d bridge kinsta-demo-network
如果您默认不指定任何驱动程序,Docker 将使用网桥驱动程序创建新网络,因为它会在您安装 Docker 引擎时自动创建网桥驱动程序。 但是,如果您使用 Docker run 命令运行 Docker 容器,它将不会使用此网络。
现在您已经有了网络,下一步是在 Docker 容器中安装 Redis。 为此,请键入: docker pull redis
。
要验证 Redis 映像是否已正确安装,请运行以下命令之一:
docker images
docker image ls
接下来,您将创建并启动 Redis 容器。 为此,请运行以下命令:
docker run -it –name dev_kinsta_redis_container -d redis
现在验证 Redis 是否正在容器中运行。 为此,请键入: docker ps
。
现在您已经确认您的 Docker 容器已启动并正在运行,您可以将容器添加到网络中。 类型: docker network connect
。
一切按预期运行后,下一步是验证在 Docker 中运行的 Redis 服务器是否已准备好接受连接。 为此,请使用docker logs
。
接下来,您必须创建一个数据库,因为您需要一种方法来连接到 Redis 容器以在服务器上运行命令。 为此,请键入: docker exec -it bash
。 您可以互换使用容器名称和容器 ID。
在容器中,使用 CLI 运行命令。 请注意,Redis 自动安装了 Docker 主机。 要使用 Redis-CLI,请键入: redis-cli
。
这会将您连接到本地主机上 Redis 的默认端口。 输入: ping
,响应应该是pong
。
接下来,通过键入select
在 Redis 服务器中选择一个数据库。 虽然默认数据库是0
,但选择db 1
。
接下来,将数据插入数据库。 使用 Redis SET
命令。 为此,请键入SET <key> <value>
。
例如:
SET mykey "Hello"
要获得相同的密钥,请键入:
get myKey
要获取密钥的值,请运行get
。 这将返回值。 接下来,通过键入MONITOR
来监控您的 Redis 数据库。
最后,通过退出 CLI 停止 Redis 服务器。 键入exit
两次以退出 CLI 和 Redis。
最后,通过键入docker stop
停止运行 Redis 容器。
Redis 与 DevKinsta
DevKinsta 允许您将 WordPress 站点连接到 Redis 数据库。 借助 DevKinsta,Redis 附加组件可作为对象缓存无缝工作,以跨多个页面加载持久保存数据。 这意味着通过使用 Redis 附加组件,您可以使用缓存来重用对象,而不是不断地查询 MySQL 数据库。
下载并设置 DevKinsta 后,将 Docker Desktop 安装为依赖项,它用于在容器内创建本地环境文件。 使用此设置,您可以在 Devkinsta 中配置 Redis 附加组件。
因此,DevKinsta 的 Redis 附加组件可以用作辅助资源,减少主数据库的负载,增加响应时间,并使应用程序运行更快。
这转化为应用程序可以有效地处理更多负载和扩展。 查看这篇文章以在您的网站上使用 Redis 插件。
概括
在 Docker 容器中运行 Redis 有很多优点。 它为您的应用程序提供沙盒环境,因此您不必再关心部署应用程序的平台。 此外,Docker 具有易用性、灵活性和高可靠性。
关于安全性,您可以使用 Synk 开箱即用地检查和扫描安全漏洞,Synk 是一种提供 Docker 映像安全性可见性的工具。 在灵活性方面,Docker 适用于大多数基于 Unix 和 Windows 的操作系统和应用程序。 这种灵活性意味着无论操作系统如何,码头化或容器化的应用程序或服务始终运行。
将 Docker 和 Redis 附加组件与 DevKinsta 一起使用很容易,当您启动它时,它会在本地启动一个 dockerized WordPress 站点。 立即查看 DevKinsta 和 Redis 插件,了解 Docker 中 Redis 的强大功能。