Redis快速部署为Docker容器的实现方法

 更新时间:2021年12月26日 15:43:00   作者:mikes zhang  
本文主要介绍了Redis快速部署为Docker容器的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Redis是一种内存键值存储,可以保存高性能的抽象数据结构。开源软件通常用于数据库、消息传递和缓存功能。

Docker 是将应用程序打包到容器中的领先工具包。它允许您将软件组件隔离到具有自己的文件系统的独立环境中。

在本指南中,我们将使用 Docker 使用Docker Hub 上的官方镜像快速部署 Redis 。与裸机安装相比,Docker 实现了更简单的设置过程,并且不会用新包污染您的主机。在继续之前,请确保您的主机上安装了正常运行的 Docker。

入门

Redis 镜像包括服务器组件和官方 CLI。它已预先配置为在您启动新容器时使用运行的默认配置值启动服务器。

映像的变体可用于覆盖不同的 Redis 版本(5.0 和 6.0)和操作系统(Alpine 和 Debian)。浏览标签列表以找到适合您环境的最佳选项。

最简单的部署如下:

docker run --name redis -d -p 6379:6379 redis:6.0

这将启动一个名为redisrunning Redis 6.0的新容器。该-d标志用于从容器中分离。服务器将一直在后台运行,直到您使用docker stop redis.

Redis 默认监听 6379 端口。该-p标志将此端口绑定到您的主机。您的应用程序将能够访问 Redis localhost:6379。请注意,这是不安全的——如果您的机器暴露在互联网上,任何人都可以访问您的 Redis 数据!

数据存储

Redis 支持多种持久性机制,可以将您的内存数据库保存到磁盘。数据将保存到/data容器中的目录中。由于 Docker 容器是临时的,您需要将卷挂载到此目录。否则,当您的容器停止时,您的数据将丢失。

docker run --name redis -d \
    -v redis-data:/data
    redis:6.0 --save 60 1

该–save标志被传递到 Redis 服务器。它配置要使用的持久性策略。此示例每秒钟写入一次数据库快照60。除非1自上次快照后发生数据库写入,否则将跳过该操作。

一个被调用的 Docker 卷redis-data由该-v标志创建。这会将您的数据存储在容器外,以便在重新启动后仍可访问。该卷将一直存在,直到通过运行将其删除docker volumes rm redis-data。

配置您的服务器

添加配置参数的最快方法是将 CLI 参数作为docker run命令的一部分传递给 Redis 服务器。–save上面的例子说明了这一点。图像名称 in 之后的任何内容docker run都将传递给在容器内执行的命令。对于 Redis 映像,该命令是 Redis 服务器。

使用 CLI 标志很快就会变得重复。您可以通过将路径作为服务器的第一个参数传递来使 Redis使用配置文件。该文件通常位于/usr/local/etc/redis/redis.conf. 使用 Docker 绑定安装redis.conf从安装到容器的本地文件系统获取:

docker run --name redis -d \
    -v redis-data:/data
    -v ./redis-conf:/usr/local/etc/redis
    redis:6.0 /usr/local/etc/redis.conf

在您的工作目录中放置一个redis.confinside redis-conf。Docker 会将此路径挂载到容器中,让 Redis 可以访问docker run命令中指定的文件。

管理Redis安全

默认情况下,Redis Docker 映像配置为在不受保护的模式下运行 Redis。这使得使用 Docker 网络从其他 Docker 容器访问 Redis 服务器变得更加容易。但是,这也意味着可以到达您的容器的任何东西都可以完全访问您的数据。

保护模式是Redis 的一项功能,它仅响应从主机的环回地址发出的未经身份验证的查询,例如localhost. 您可以通过添加protected-mode yes到您的redis.conf. 当与 Dockerized 安装一起使用时,这将导致 Redis 只能在其自己的容器内访问,这通常并不理想。

您可以通过添加requirepass example到您的redis.conf. Redis 将只接受来自提供配置密码的客户端的查询。Redis 6 还支持功能更齐全的访问控制,让您可以设置具有不同权限的多个用户帐户。

要使用身份验证,请按照上一节中的指导创建 Redis 配置文件并将其挂载到您的容器中。如果您不想设置密码,只需将其加入应用程序所需的 Docker 网络,即可确保您的安装安全。不要在没有先设置身份验证的情况下将端口 6379 绑定到您的主机。

使用您的 Redis 安装

现在 Redis 已完全设置,您可以继续从客户端访问它。如果您从主机连接,则可以使用 Docker 容器的 IP(通过运行可见docker inspect redis,根据容器名称进行调整)和端口6379。

要从另一个 Docker 容器访问 Redis,最好将两个容器都加入一个 Docker 网络:

docker network create redis
docker run --name redis --network redis -d redis:6.0
docker run --name api --network redis -d my-api:latest

现在,您的应用程序容器将能够通过redis主机名上的端口 6379 访问 Redis 。当它们共享一个 Docker 网络时,Docker 使容器名称可以作为主机名访问。

在这里插入图片描述

您可以使用redis-cli容器映像中包含的二进制文件手动与数据库交互。以分离模式 ( -d)启动您的容器,使其在后台运行。然后使用docker exec运行redis-cli命令:

docker exec -it redis-container redis-cli

这将使您进入容器内的 Redis CLI 会话。

概括

Docker 可以让您快速轻松地启动新的 Redis 实例,而无需将软件安装到您的机器上。使用官方 Docker 镜像启动你的容器,然后添加命令标志或挂载一个配置文件以满足你的需要。

需要始终牢记的两件事是存储和安全性:如果您需要使用 Redis 持久性功能,则应该使用 Docker 卷以避免丢失数据。请记住,Dockerized Redis 默认为无保护模式且无需身份验证,因此在最坏的情况下,暴露 6379 端口可能会产生灾难性的后果。

到此这篇关于Redis快速部署为Docker容器的实现方法的文章就介绍到这了,更多相关Redis部署为Docker容器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux中安装Docker Compose的步骤

    Linux中安装Docker Compose的步骤

    Docker Compose需要在系统上安装了Docker才能正常工作,如果你的系统上还没有安装Docker,请先安装Docker,下面给大家分享Linux中安装Docker Compose的步骤,感兴趣的朋友一起看看吧
    2024-05-05
  • Docker中数据卷(volume)管理的两种方式

    Docker中数据卷(volume)管理的两种方式

    数据卷有两种形式,一种是容器中的某个目录,它可以被别的容器引用,只要有一个容器引用了这个数据卷,数据就不会被删除;另一种数据卷是将容器中的数据卷和宿主机的目录进行挂载。 数据卷可以在多个容器之间共享,修改数据卷不会影响镜像
    2021-07-07
  • docker remote api一键TLS加密的实现

    docker remote api一键TLS加密的实现

    本文主要介绍了docker remote api一键TLS加密的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • docker中nginx的location转发不生效的解决

    docker中nginx的location转发不生效的解决

    这篇文章主要介绍了docker中nginx的location转发不生效的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 如何让docker中的mysql启动时自动执行sql语句

    如何让docker中的mysql启动时自动执行sql语句

    这篇文章主要介绍了让docker中的mysql启动时自动执行sql的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Docker Compose部署微服务项目上线功能

    Docker Compose部署微服务项目上线功能

    这篇文章主要介绍了Docker Compose部署微服务项目上线,需求是这样的编写一个SpringBoot + Redis 的微服务项目,并提供 hello接口,每访问一次接口,计数器+1,本文给大家分享实现思路,需要的朋友可以参考下
    2022-07-07
  • 在docker创建的mysql容器中如何执行mysql脚本

    在docker创建的mysql容器中如何执行mysql脚本

    在Docker容器中执行MySQL脚本的步骤包括进入容器、连接MySQL服务并执行脚本,如果脚本在主机上,可以直接通过命令执行,无需进入容器
    2024-11-11
  • 如何自己搭建DockerHub实现过程解析

    如何自己搭建DockerHub实现过程解析

    这篇文章主要介绍了如何自己搭建DockerHub实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • docker如何开启2375端口提供外部访问docker

    docker如何开启2375端口提供外部访问docker

    这篇文章主要介绍了docker如何开启2375端口提供外部访问docker问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Docker数据目录迁移方法详解

    Docker数据目录迁移方法详解

    这篇文章主要介绍了Docker数据目录迁移方法,Docker数据目录迁移成功后再也不用担心服务器系统盘目录被占满的情况的,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05

最新评论