windows使用docker安装redis并使用docker执行redis-cli

2024-05-09 16:32

本文主要是介绍windows使用docker安装redis并使用docker执行redis-cli,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 安装Windows Docker Desktop
  • 下载Redis镜像
  • 启动下载的Redis镜像的容器
  • Redis-cli连接Redis

安装Windows Docker Desktop

下载并安装,docker hub登录之类不赘述

下载Redis镜像

启动docker desktop,本质是为了启动docker daemon(守护进程)。执行命令前必须保证docker daemon是启动状态
去docker hub寻找中意的镜像
我中意的是6.2.4-alpine,6.2.4是redis版本,目前最新,alpine是一个精简版linux,镜像基于alpine构建所以体积也小。
命令如下:

docker pull redis:6.2.4-alpine

启动下载的Redis镜像的容器

命令如下:

docker run -v C:\work\data\docker-redis-volume\conf:/usr/local/etc/redis --name myredis -d -p 6379:6379 redis:6.2.4-alpine redis-server /usr/local/etc/redis/redis.conf

先不要急着执行!! 还有一些微小的工作要做。
这个是我自己用的命令,看起来有点长,我解释一下
命令的核心其实就是这样:

docker run -d redis:6.2.4-alpine redis-server

只要这一句就可以启动redis了,这里-d是指在后台启动容器,只打印启动的容器的ID,不加的话容器执行的命令会打印到当前命令行,在这个例子中我们会看到redis的启动信息

接下来逐一介绍我使用的语句里的参数含义:

-v C:\work\data\docker-redis-volume\conf:/usr/local/etc/redis

-v是指将容器中的 /usr/local/etc/redis 目录挂载到宿主机的C:\work\data\docker-redis-volume\conf目录
后面的容器目录不用修改,前面的目录根据自己电脑的目录来修改

--name myredis

给你的容器起个名字,随便起吧

-p 6379:6379

-p用来映射容器的端口,前面是宿主机的,后面是容器里的

redis-server /usr/local/etc/redis/redis.conf

redis-server其实就是启动redis的命令,后面接上一个文件,表示使用这个配置文件来启动,这个配置文件的路径可以看到,和我们之前挂载出来的路径相同,结合前面的-v命令,意思就是使用宿主机中的C:\work\data\docker-redis-volume\conf\redis.conf文件作为配置文件启动容器中的redis。
这里配置文件可以去官网下载,根据自己的redis版本选择。
windows中注意修改配置文件中的如下几点:

#bind 127.0.0.1

这一行加上#号,表示不用绑定本地访问,这很重要,尤其在windows上,实测如果不注释,宿主机上都无法访问
不知道为什么,我在Mac系统上试过,可以不用注释这行,就能够本地访问。猜测可能是因为windows的wsl,宿主机的访问还是被当作外部访问了,有了解详情的高手可以指点一下。

然后的操作二选一,关闭保护模式或者设置密码,建议是设置密码

#protected-mode yes

注释这行关闭保护模式

requirepass 97812e6b-d9be-4cd1

或者打开这行设置密码
创建好目录,下载和修改了配置文件,准备工作完成,可以执行启动命令了。
之后docker ps查看可以看到:
查看已启动redis容器

Redis-cli连接Redis

使用docker装的redis,宿主机没有装redis自然也没有redis-cli了,那么怎么连接呢?
两种方式,一种直接进入redis容器内部执行redis-cli

$ docker exec -it a52dc redis-cli

这里-it是-i -t合起来的意思,作用是使用交互式命令行来进行操作,a52dc就是容器的id,docker很多命令都不要求id写全,只能达到区分效果就行
整句话的意思就是我要到a52dc这个容器内部去执行redis-cli命令,并且把这个命令的输入输出关联到当前的交互窗口
上面这个方式是最简单的,但是我们想模拟外部连接该怎么做呢,可以再启动一个只执行redis-cli的redis镜像

$ docker run -it --network container:a52dc --rm redis:6.2.4-alpine redis-cli

这个命令使用redis:6.2.4-alpine镜像启动另外一个容器,不过只是执行其中的redis-cli命令
这里–network后面是container用法,指定和a52dc这个 container公用一个网络
–rm表示当容器退出,就会自动删除容器和产生的相关文件,由于我们只是使用redis-cli命令,加上–rm非常合理
这种方式不仅可以连接本地,也可以连接远程redis,只需要在redis-cli之后接上相关参数,和使用redis-cli一样。

$ docker run -it --rm redis:6.2.4-alpine redis-cli -h some-host -p some-port

这篇关于windows使用docker安装redis并使用docker执行redis-cli的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973903

相关文章

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件