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

相关文章

Docker搜索镜像(images)

docker搜索镜像命令:docker search 镜像名

centos7安装docker及启动

Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令: [root@localhost ~]# yum install docker 启动docker:[root@localhost ~]# systemctl start docker.service 开机启动docker:[root@localhost ~]

使用Array实现Java堆栈

本教程给出了使用Array 实现Stack数据结构的示例。堆栈提供将新对象放在堆栈上(方法push())并从堆栈中获取对象(方法pop())。堆栈根据后进先出(LIFO)返回对象。请注意,JDK提供了一个默认的Java堆栈实现作为类java.util.Stack。 适用于所有堆栈实现的两个强制操作是: push():数据项放置在堆栈指针指向的位置。pop():从堆栈指针指向的位置删除并返回数据

Spring Boot - 使用类类型信息获取所有已加载的bean

Spring启动会在内部加载大量bean,以最少的配置运行您的应用程序。在这个例子中,我们将学习如何找出所有那些Spring boot加载的bean及其类类型信息。 使用ApplicationContext获取所有已加载的bean 要自动执行方法,当应用程序完全加载时,我正在使用CommandLineRunner接口。CommandLineRunner用于指示bean 在Spring应用程序中

docker搭建mysql主从配置

1.拉取mysql,这里使用5.7 docker pull mysql:5.7 2、在本地主机新建两个配置文件:my-master.cnf、my-slave.cnf my-master.cnf: [mysqld]log-bin = mysql-binserver-id = 1 my-slave.cnf: [mysqld]server-id = 2 注意:自己创建文件所在的路径。

Redis利用zset数据结构如何实现多字段排序,score的调整(finalScore = score*MAX_NAME_VALUE + getIntRepresentation(name) )

1、原文:   2、使用sql很容易实现多字段的排序功能,比如: select * from user order by score desc,name desc; 3、问题:用两个字段(score,name)排序。在redis中应该怎么做?   4、使用按分数排序的redis集合。你必须根据你的需要准备分数。 finalScore = score*MAX_NAME_VALUE +

使用ThreadPoolExecutor创建线程池有哪些关键参数

1、ThreadPoolExecutor类的全参数构造方法: /*** Creates a new {@code ThreadPoolExecutor} with the given initial* parameters.** @param corePoolSize the number of threads to keep in the pool, even* if they

关于Java的数组的使用

关于一维数组的使用 代码示例一如下: package com;public class test_array {public static void main(String[] args){//1.如何定义 一个 数组//1.1数组的声明String[] names;int[] scores;//1.2数组的初始化://1.2.1静态初始化:初始化数组与数组元素赋值同时进行nam

Android_03_数据库的使用总结

前言: 1>区分SQL和SQLite SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。 SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相

Android_02_关于SharePreferences的使用

前言: 我们使用SharePreferences的主要目的是针对一些简单的数据进行存取,其是通过键值对来存取的, 其实质是通过xml文件进行保存的;对于一些简单数据的存取,我们可以用SharePreferences,替代 其他几种复杂的数据存取的方式,比如文件的读写或者数据库的操作; 本示例演示的内容是:通过SharedPreferences来实现记住密码的功能,无需第二次再输入密码