如何以及为什么在Docker中运行Redis?

如何以及为什么在Docker中运行Redis?

Redis是一个高可用的内存数据库。它的磁盘持久性键值数据存储是多种高可用性用途的理想选择。

另一方面,Docker是一个用于容器化应用程序和服务的工具,隔离它们的环境,并允许它们单独运行。你可以把Docker作为应用程序和服务的包管理器,其中包含所有必要的依赖关系、配置、脚本等。一个被称为Dockerfile的脚本被放置在Docker容器内,允许你将容器作为一个实体进行部署。

这篇文章教你如何有效地使用这两种开源技术。它还涉及到为什么在Docker容器内运行Redis集群是至关重要的,以及与在虚拟机或裸机服务器上运行Redis集群相比,这样做的优势和好处。

  1. Redis的各种用途
  2. Redis在容器中的最佳表现
  3. 如何在Docker中使用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 Hub

创建账户后,登录Docker Hub并下载你的操作系统的最新版本的Docker Desktop。

Docker下载页面

Docker下载页面

安装程序完成后,进入你的终端窗口,看看Docker引擎是否准备好了,然后输入以下命令:

docker --version

已安装的Docker版本

已安装的Docker版本

然后输入:docker-compose --version.

与Docker一起安装的Compose

与Docker一起安装的Compose

Compose是一个使用YAML文件定义和运行多容器Docker应用程序的工具,你用它来配置应用程序服务。

你可以使用下面的代码运行一个Docker化的Redis来验证Docker引擎是否启动和运行。这个例子从Docker Hub运行Redis镜像,并命名为my-redis-container

docker run --name my-redis-container -d redis

来自Docker Hub的Redis镜像被命名为my-redis-container

来自Docker Hub的Redis镜像被命名为my-redis-container

因为你没有本地的镜像,所以Docker从Docker Hub中提取Redis镜像。

现在,你可以打开Docker桌面,确认它拉取了Redis镜像。在仪表板上,点击左侧面板上的Images

Docker Desktop

Docker Desktop

现在,你可以创建一个网络。注意,Docker驱动使用桥接或覆盖的内置网络驱动来创建Docker网络。你也可以安装和使用第三方的网络驱动。

不同的是,桥接网络在单个Docker引擎安装上是隔离的,而覆盖网络跨越多个Docker主机,每个主机运行一个引擎。

类型:

docker network create -d bridge kinsta-demo-network

使用桥接驱动的Docker网络

使用桥接驱动的Docker网络

如果你默认没有指定任何驱动,Docker会使用桥接驱动来创建一个新的网络,因为它在你安装Docker引擎时自动创建桥接驱动。然而,如果你用Docker运行命令运行一个Docker容器,它就不会使用这个网络。

现在你有了一个网络,接下来就是在Docker容器内安装Redis。要做到这一点,输入: docker pull redis

从Docker Hub拉取Redis镜像

从Docker Hub拉取Redis镜像

为了验证Redis镜像的安装是否正确,请运行以下命令之一:

docker images
docker image ls

用户终端中的可用Docker镜像

用户终端中的可用Docker镜像

接下来,你创建并启动Redis容器。要做到这一点,请运行以下命令:

docker run -it –name dev_kinsta_redis_container -d redis

Docker conatainer

Docker conatainer

现在验证Redis是否在容器中运行。要做到这一点,输入: docker ps

验证Redis是否在容器中启动和运行

验证Redis是否在容器中启动和运行

现在你已经确认你的Docker容器已经启动并运行,你可以将容器添加到网络中。输入: docker network connect

将一个Docker容器添加到创建的docker网络中

将一个Docker容器添加到创建的docker网络中

一切都按预期进行,下一步是验证你在Docker内运行的Redis服务器是否准备好接受连接。要做到这一点,请使用 docker logs

验证Redis镜像是否在Docker容器内运行

验证Redis镜像是否在Docker容器内运行

接下来,你必须创建一个数据库,因为你需要一种方法来连接到Redis容器,以便在服务器上运行命令。要做到这一点,输入:docker exec -it bash。你可以交替使用容器名称和容器ID。

连接到Redis容器实例

连接到Redis容器实例

在容器中,使用CLI来运行命令。注意,Redis会自动安装Docker主机。要使用Redis-CLI,请输入: redis-cli

使用Redis CLI来运行Redis命令

使用Redis CLI来运行Redis命令

这样就可以连接到本地主机上的Redis的默认端口。输入: ping , 响应应该是 pong

测试Redis连接是否已启动并运行

测试Redis连接是否已启动并运行

接下来,通过输入 select 来选择你的Redis服务器内的数据库。虽然默认的数据库是 0 ,但选择 db 1

选择一个特定的Redis数据库

选择一个特定的Redis数据库

接下来,向数据库插入数据。使用 Redis SET 命令。要这样做,键入 SET <key> <value>

例如:

SET mykey "Hello"

要获得相同的键,键入

get myKey

从Redis插入和取回数据

从Redis插入和取回数据

要获得键的值,运行 get 。这将返回该值。接下来,通过输入 MONITOR 来监控你的 Redis 数据库。

监控 Redis 数据库

监控 Redis 数据库

最后,通过退出CLI来停止Redis服务器。输入 exit 两次以退出CLI和Redis。

从 Redis CLI 中退出

从 Redis CLI 中退出

最后,通过输入 docker stop 来停止Redis容器的运行。

执行命令,停止Docker容器的运行。

执行命令,停止Docker容器的运行。

小结

在Docker容器中运行Redis有很多好处。它为你的应用程序提供了一个沙盒环境,所以你不必再关心你部署应用程序的平台。此外,Docker实现了易用性、灵活性和高可靠性。

关于安全性,你可以用Synk检查和扫描安全漏洞,Synk是一个对Docker镜像的安全性提供可见性的工具。而关于灵活性,Docker适用于大多数基于Unix和Windows的操作系统和应用程序。这种灵活性意味着,无论操作系统如何,docker化或容器化的应用程序或服务总是在运行。

评论留言