阿里云ECS使用docker部署redis并远程连接

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文主要介绍如何在阿里云ECS服务器上通过docker部署redis,并在springboot项目中添加redis依赖进行远程连接。

准备工作:

提前购买好阿里云服务器,本文使用的是阿里云ECS服务器,操作系统是Alibaba Cloud Linux  3.2104 64位

1.安装docker

在阿里云服务器上安装docker其实有官方的教程,这里是针对本文使用的操作系统Alibaba Cloud Linux 3的安装教程:

部署并使用Docker(Alibaba Cloud Linux 3)

关于其它操作系统的docker安装教程可以查看以下:

部署并使用Docker

对于Alibaba Cloud Linux 3操作系统而言,如果是安装dnf源中默认的docker(podman-docker)的话,操作非常简单,只需运行以下命令即可安装:

dnf -y install docker

再运行以下命令查看docker是否安装成功:

docker images

看到显示如下信息的话,则是安装成功:

docker-images.png


注意:使用这种方式安装的podman-docker是没有守护进程的(systemd),因此后续无需关注podman-docker的运行状态,即无需进行systemctl命令的相关操作,直接使用docker即可。类似systemctl start dockersystemctl status docker都是没有必要执行,而且也是无法执行的,否则会报如下错误:

Failed to start docker.service: Unit docker.service not found.

想要通过docker启动一个容器的话直接docker run image-name即可。

2.docker部署redis并远程连接

2.1部署ECS服务器本机访问的redis

通过docker部署redis并不难,简单的只需要以下命令即可启动一个最新版本的redis容器,并指定容器名称为redis-test,映射端口到外部虚拟机:

docker run -itd --name redis-test -p 6379:6379 redis

然后可以通过以下命令进入容器内部:

docker exec -it redis-test /bin/bash

使用redis-cli命令可启动redis客户端,并执行相应的redis操作:

[root@iZ0jl11vshonpsvr9c0trnZ ~]# docker exec -it redis-test /bin/bash

Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.

root@9b7ccfceb5e2:/data# redis-cli

127.0.0.1:6379> set key1 value1

OK

127.0.0.1:6379> get key1

"value1"

127.0.0.1:6379> exit

root@9b7ccfceb5e2:/data#

然而这样部署的redis无法被应用远程连接,还需要修改一些配置。

2.2修改redis配置文件redis.conf

redis.conf是redis的配置文件,可以从官网下载:http://download.redis.io/redis-stable/redis.conf

这里将其下载后放置在/etc目录下,即绝对路径为:/etc/redis.conf

接下来需要修改redis.conf配置文件中的两处地方

第一处,需要开启地址授权,可以将bind 127.0.0.1注释掉或者是将后面的ip改成0.0.0.0。这样表示所有的ip都能访问该redis服务,否则只有本机可以访问。

第二处,将protected-mode的值改成no,默认为yes

结果如下:

redisconf.PNG


2.3检查服务器防火墙是否开放6379端口

可以选择只修改开放6379端口或者是关闭防火墙(非生产环境)

#执行下面代码 如果返回yes 就代表开启了 返回no 就代表没有

#也有可能显示firewallD没有在运行,这时端口是开放的

firewall-cmd --query-port=6379/tcp

#如果上面返回no 执行下面的这个代码,开通端口

#如果是yes,可以不用执行略过

firewall-cmd --zone=public --add-port=6379/tcp --permanent

#然后重启防火请

firewall-cmd --reload

2.4检查阿里云服务器的安全组是否开放了6379端口

如果没有开放的话可以修改该ECS服务器对应安全组的配置或者选择新建一个安全组分配给该ECS服务器。

可以选择“快速添加”入方向的访问规则,如下:

aliyunsecurity.PNG


2.5指定redis.conf启动redis服务

由于我们做的修改是在redis.conf配置文件中,所以在启动redis的时候需要指定redis.conf才可以让redis按照我们修改的配置启动。

可以使用以下命令启动一个可远程连接的redis服务:

docker run -p 6379:6379 --name redis-test -v /etc/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

该命令的解释如下:

-p 6379:6379 端口映射,前者表示主机部分,后者表示容器部分。--name redis-test 指定该容器名称,查看和进行操作都比较方便。-v 挂载目录,规则与端口映射相同。这里挂载了redis.conf配置文件以及redis存储数据的文件夹。-d redis 表示后台启动redisredis-server /etc/redis/redis.conf  以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/etc/redis.conf--appendonly yes 指定redis持久化的方式为AOF

3.redis远程连接demo

在一个springboot项目中添加jedis依赖

   <dependency>

     <groupId>redis.clients</groupId>

     <artifactId>jedis</artifactId>

     <version>3.2.0</version>

   </dependency>

编写单元测试程序如下:

import org.junit.Test;

import redis.clients.jedis.Jedis;

public class RedisConnectTest {

   @Test

   public void TestPing() {

       Jedis jedis = new Jedis("1.2.3.4",6379);

       System.out.println("TestPing >>>>>>>>>>>>> "+jedis.ping());

   }

}

运行TestPing()方法即可验证是否可以成功连接远程redis

参考资料:

docker 安装redis并配置redis.conf

Spring boot连接远程阿里云服务器中的Redis(修改redis.conf配置文件+开放端口)

SpringBoot中连接服务器Redis需要配置操作

基于SpringBoot集成测试远程连接的Redis服务


相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
人工智能 JSON Linux
利用阿里云GPU加速服务器实现pdf转换为markdown格式
随着AI模型的发展,GPU需求日益增长,尤其是个人学习和研究。直接购置硬件成本高且更新快,建议选择阿里云等提供的GPU加速型服务器。
利用阿里云GPU加速服务器实现pdf转换为markdown格式
|
1天前
|
开发框架 缓存 .NET
阿里云轻量应用服务器、经济型e、通用算力型u1实例怎么选?区别及选择参考
在阿里云目前的活动中,价格比较优惠的云服务器有轻量应用服务器2核2G3M带宽68元1年,经济型e实例2核2G3M带宽99元1年,通用算力型u1实例2核4G5M带宽199元1年,这几个云服务器是用户关注度最高的。有的新手用户由于是初次使用阿里云服务器,对于轻量应用服务器、经济型e、通用算力型u1实例的相关性能并不是很清楚,本文为大家做个简单的介绍和对比,以供参考。
|
9天前
|
弹性计算 运维 安全
阿里云轻量应用服务器与ECS的区别及选择指南
轻量应用服务器和云服务器ECS(Elastic Compute Service)是两款颇受欢迎的产品。本文将对这两者进行详细的对比,帮助用户更好地理解它们之间的区别,并根据自身需求做出明智的选择。
|
10天前
|
SQL 弹性计算 安全
阿里云上云优选与飞天加速计划活动区别及购买云服务器后续必做功课参考
对于很多用户来说,购买云服务器通常都是通过阿里云当下的各种活动来购买,这就有必要了解这些活动的区别,同时由于活动内的云服务器购买之后还需要单独购买并挂载数据盘,还需要设置远程密码以及安全组等操作之后才能正常使用云服务器。本文就为大家介绍一下目前比较热门的上云优选与飞天加速计划两个活动的区别,以及通过活动来购买云服务器之后的一些必做功课,确保云服务器可以正常使用,以供参考。
|
13天前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
24天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
29 2
|
1月前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
50 6
|
1月前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
43 3
|
7天前
|
机器学习/深度学习 人工智能 编解码
阿里云GPU云服务器优惠收费标准,GPU服务器优缺点与适用场景详解
随着人工智能、大数据分析和高性能计算的发展,对计算资源的需求不断增加。GPU凭借强大的并行计算能力和高效的浮点运算性能,逐渐成为处理复杂计算任务的首选工具。阿里云提供了从入门级到旗舰级的多种GPU服务器,涵盖GN5、GN6、GN7、GN8和GN9系列,分别适用于图形渲染、视频编码、深度学习推理、训练和高性能计算等场景。本文详细介绍各系列的规格、价格和适用场景,帮助用户根据实际需求选择最合适的GPU实例。
|
9天前
|
弹性计算 Linux 数据安全/隐私保护
阿里云上快速搭建幻兽帕鲁游戏联机服务器指南
对于热爱幻兽帕鲁游戏的玩家来说,搭建一台专属的联机服务器无疑能够大大提升游戏体验。阿里云作为领先的云计算服务商,为玩家提供了便捷、高效的服务器搭建方案。本文将为您详细介绍如何在阿里云上快速搭建幻兽帕鲁游戏联机服务器,让您轻松享受多人游戏的乐趣。