Redis是一个高可用的内存数据库。它的磁盘持久性键值数据存储是多种高可用性用途的理想选择。
另一方面,Docker是一个用于容器化应用程序和服务的工具,隔离它们的环境,并允许它们单独运行。你可以把Docker作为应用程序和服务的包管理器,其中包含所有必要的依赖关系、配置、脚本等。一个被称为Dockerfile的脚本被放置在Docker容器内,允许你将容器作为一个实体进行部署。
这篇文章教你如何有效地使用这两种开源技术。它还涉及到为什么在Docker容器内运行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数据库文件中的数据。
要把你的Redis存储放在Docker容器里,你必须在目标环境里有Docker。下面的说明告诉你如何在Windows上安装Docker。
你可以按照Docker网站上的指南来安装Unix或基于Unix的操作系统。安装和配置后,你可以在Docker容器内创建一个网络。然后你可以安装Redis并创建一个数据库。最后,你可以对你的Redis数据库进行操作。
首先,在你的操作系统上安装Docker。可以选择导航到Docker Hub并创建一个账户。你需要一个账户来创建和发布你的镜像。
Docker Hub
创建账户后,登录Docker Hub并下载你的操作系统的最新版本的Docker Desktop。
Docker下载页面
安装程序完成后,进入你的终端窗口,看看Docker引擎是否准备好了,然后输入以下命令:
docker --version
已安装的Docker版本
然后输入:docker-compose --version
.
与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从Docker Hub中提取Redis镜像。
现在,你可以打开Docker桌面,确认它拉取了Redis镜像。在仪表板上,点击左侧面板上的Images。
Docker Desktop
现在,你可以创建一个网络。注意,Docker驱动使用桥接或覆盖的内置网络驱动来创建Docker网络。你也可以安装和使用第三方的网络驱动。
不同的是,桥接网络在单个Docker引擎安装上是隔离的,而覆盖网络跨越多个Docker主机,每个主机运行一个引擎。
类型:
docker network create -d bridge kinsta-demo-network
使用桥接驱动的Docker网络
如果你默认没有指定任何驱动,Docker会使用桥接驱动来创建一个新的网络,因为它在你安装Docker引擎时自动创建桥接驱动。然而,如果你用Docker运行命令运行一个Docker容器,它就不会使用这个网络。
现在你有了一个网络,接下来就是在Docker容器内安装Redis。要做到这一点,输入: docker pull redis
。
从Docker Hub拉取Redis镜像
为了验证Redis镜像的安装是否正确,请运行以下命令之一:
docker images
docker image ls
用户终端中的可用Docker镜像
接下来,你创建并启动Redis容器。要做到这一点,请运行以下命令:
docker run -it –name dev_kinsta_redis_container -d redis
Docker conatainer
现在验证Redis是否在容器中运行。要做到这一点,输入: docker ps
。
验证Redis是否在容器中启动和运行
现在你已经确认你的Docker容器已经启动并运行,你可以将容器添加到网络中。输入: docker network connect
。
将一个Docker容器添加到创建的docker网络中
一切都按预期进行,下一步是验证你在Docker内运行的Redis服务器是否准备好接受连接。要做到这一点,请使用 docker logs
。
验证Redis镜像是否在Docker容器内运行
接下来,你必须创建一个数据库,因为你需要一种方法来连接到Redis容器,以便在服务器上运行命令。要做到这一点,输入:docker exec -it bash。你可以交替使用容器名称和容器ID。
连接到Redis容器实例
在容器中,使用CLI来运行命令。注意,Redis会自动安装Docker主机。要使用Redis-CLI,请输入: redis-cli
。
使用Redis CLI来运行Redis命令
这样就可以连接到本地主机上的Redis的默认端口。输入: ping
, 响应应该是 pong
。
测试Redis连接是否已启动并运行
接下来,通过输入 select
来选择你的Redis服务器内的数据库。虽然默认的数据库是 0
,但选择 db 1
。
选择一个特定的Redis数据库
接下来,向数据库插入数据。使用 Redis SET
命令。要这样做,键入 SET
。
例如:
SET mykey "Hello"
要获得相同的键,键入
get myKey
从Redis插入和取回数据
要获得键的值,运行 get
。这将返回该值。接下来,通过输入 MONITOR
来监控你的 Redis 数据库。
监控 Redis 数据库
最后,通过退出CLI来停止Redis服务器。输入 exit
两次以退出CLI和Redis。
从 Redis CLI 中退出
最后,通过输入 docker stop
来停止Redis容器的运行。
执行命令,停止Docker容器的运行。
在Docker容器中运行Redis有很多好处。它为你的应用程序提供了一个沙盒环境,所以你不必再关心你部署应用程序的平台。此外,Docker实现了易用性、灵活性和高可靠性。
关于安全性,你可以用Synk检查和扫描安全漏洞,Synk是一个对Docker镜像的安全性提供可见性的工具。而关于灵活性,Docker适用于大多数基于Unix和Windows的操作系统和应用程序。这种灵活性意味着,无论操作系统如何,docker化或容器化的应用程序或服务总是在运行。