当前位置: 首页 > news >正文

【Linux Redis】关于用docker拉取Redis后,让虚拟机运行起来redis,并使得其可以连接到虚拟机外的navicat。


步骤一:拉取Redis镜像


docker pull redis
这个命令会下载最新版本的Redis镜像到你的本地Docker仓库中。你也可以指定一个具体的版本号,例如docker pull redis:6.2.6,来拉取特定版本的Redis镜像。

如果拉取遇到问题请参考【Linux AnolisOS】关于Docker的一系列问题。尤其是拉取东西时的网络问题,镜像源问题。-CSDN博客

拉取完后需要

创建一个目录用于存放 Redis 配置和数据:

存放配置

mkdir -p /myredis/redis/conf

存放数据

mkdir -p /myredis/data

创建配置文件redis.conf

sudo nano /myredis/redis/conf/redis.conf

配置文件redis.conf

# 开启密码验证(可选)
# requirepass xxx# 允许redis外地连接,需要注释掉绑定的IP
# bind 127.0.0.1# 关闭保护模式(可选)
protected-mode no# 注释掉daemonize yes,或者配置成 daemonize no。因为该配置和 docker run中的 -d 参数冲突,会导致容器一直启动失败
daemonize no# 开启redis数据持久化, (可选)
appendonly yes

小提示:

更改linux的文件名字/myredis/redis/conf/redis.config改成/myredis/redis/conf/redis.conf

mv /myredis/redis/conf/redis.config /myredis/redis/conf/redis.conf

步骤二:启动Redis容器

拉取完镜像后,你可以使用`docker run`命令来启动一个Redis容器。以下是一个基本的启动命令:

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

- `-d`:表示以后台模式运行容器。
- `--name my-redis`:指定容器的名称为`my-redis`,你可以根据需要修改这个名称。
- `-p 6379:6379`:将主机的6379端口映射到容器的6379端口,这样你就可以通过主机的IP地址和端口来访问Redis服务了。
- `redis`:表示要运行的镜像名称。

也可以

使用以下命令启动Redis容器,并将配置文件和数据目录挂载到容器中

docker run --name myredis --privileged=true \
-p 6379:6379 \
-v /myredis/data:/data \
-v /myredis/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

参数说明

--name:设置容器名为redis。
-p 6379:6379:将容器的6379端口映射到宿主机的6379端口。
-v /myredis/data:/data:将宿主机的data目录挂载到容器的/data目录,用于数据持久化。
-v /myredis/redis/conf/redis.conf:/etc/redis/redis.conf:将宿主机的redis.conf配置文件挂载到容器的/etc/redis/redis.conf,使用自定义的配置文件启动Redis。
-d:以守护进程模式运行容器。
redis redis-server /etc/redis/redis.conf:指定容器启动后执行的命令,即用redis-server启动Redis服务,并使用/etc/redis/redis.conf配置文件。

步骤三:验证Redis容器是否启动成功

你可以使用

docker ps

命令来查看当前正在运行的容器列表,以验证Redis容器是否启动成功。

然后

检查配置文件

cat /myredis/redis/conf/redis.conf

检查容器内部配置文件

docker exec -it 运行着Redis服务的容器ID /bin/bash

跟着红框一步一步走

然后就是

ipconfig

找到红框ip

写到navicat里就行了。

希望:每次打开虚拟机都要自己启动redis所以想要让redis在打开虚拟机后自己启动

设置docker开机启动

sudo systemctl enable docker

对于redis

Docker提供了几种重启策略,以帮助管理和维护容器的运行状态。以下是关于always、unless-stopped、on-failure这三种重启策略的详细介绍:

看下策略之间先看下面的注意

  1. always策略

    • 行为:无论容器的退出原因是什么,Docker都会自动重启该容器。

    • 适用场景:这个策略适用于需要持续运行的关键服务,如Web服务器、数据库、消息队列等。它确保这些服务在发生任何故障时都能自动恢复,从而提高系统的可靠性和可用性。

    • 命令示例docker run --restart=always (容器id或者容器名)

  2. unless-stopped策略

    • 行为:只要容器没有被手动停止,Docker就会自动重启它。如果容器被手动停止了,则不会自动重启,除非再次手动启动。

    • 适用场景:这个策略提供了更灵活的重启选项。它适用于那些需要在维护、升级或调试期间暂时停止的服务,但又不希望这些服务在停止后自动重启的情况。

    • 命令示例docker run --restart=unless-stopped (容器id或者容器名)

    注意:当你使用 docker run 命令时,你实际上是在创建一个新的容器实例。如果你想要重启一个已经存在的容器,你应该使用 docker restart 命令,而不是再次运行 docker ru,或者docker update

    这里不知道为什么用redis,他老是说没这个容器,只好用容器id了(容器id怎么看,前面已经教了哈)

    查看是否设置成功,检查RestartPolicy内容 docker inspect 容器id或者名

    就是找到这个说明就OK了

    我才发现有叫redis的和redis镜像的,分明两个都是redis

docker inspect redis

可能是因为我拉取的是redis:latest,随着官方更新它也会跟着更新,所以运行时可能是其redis容器再分的容器,而redis这个大容器要保持和官方最新一直,以保证如果我们一直运行目前版本,也能更新。也确实可以看到,这个正在运行的容器确实是redis这个大容器的id的镜像。

小知识:

redis:latest 是一个 Docker 镜像标签,它指向 Redis 官方镜像的最新版本。当你使用 docker pull redis:latest 命令时,Docker 会从 Docker Hub(一个流行的 Docker 镜像仓库)上拉取 Redis 官方镜像的最新稳定版本。

以下是对 redis:latest 的详细解释:

  1. 镜像名称redis 是镜像的名称,它指的是 Redis 数据库系统。

  2. 标签(Tag)latest 是镜像的标签,用于指定要拉取的镜像版本。latest 标签通常指向该镜像的最新稳定版本。然而,需要注意的是,latest 标签可能会随着 Redis 的新版本的发布而更新,因此它可能不是完全固定的。

  3. 官方镜像:由于 redis:latest 是官方镜像的一部分,因此你可以放心地使用它,因为它经过了官方的测试和验证。

  4. 更新频率:随着 Redis 的新版本发布,redis:latest 标签所指向的镜像也会相应更新。这意味着,如果你经常拉取 redis:latest 镜像,你将获得 Redis 的最新功能和修复。

使用 redis:latest 镜像的优点包括:

  • 方便性:由于 latest 标签始终指向最新版本,因此你无需指定版本号即可获得最新的 Redis 镜像。

  • 兼容性:官方镜像通常与 Redis 的最新版本保持兼容,因此你可以放心地在生产环境中使用它。

然而,使用 redis:latest 镜像也有一些潜在的风险:

  • 不稳定性:由于 latest 标签指向的是最新版本,因此它可能包含一些尚未被充分测试的新功能和修复。这可能导致一些未知的问题或不稳定的行为。

  • 版本变化:由于 latest 标签可能会随着新版本的发布而更新,因此你的容器可能会在不通知的情况下自动升级到新版本。这可能会导致与现有代码或配置的兼容性问题。

为了降低这些风险,你可以考虑使用具有特定版本号的 Redis 镜像(例如 redis:6.2),以确保你的容器始终运行在同一版本的 Redis 上。这样可以提供更好的稳定性和可预测性。

相关文章:

【Linux Redis】关于用docker拉取Redis后,让虚拟机运行起来redis,并使得其可以连接到虚拟机外的navicat。

步骤一:拉取Redis镜像 docker pull redis 这个命令会下载最新版本的Redis镜像到你的本地Docker仓库中。你也可以指定一个具体的版本号,例如docker pull redis:6.2.6,来拉取特定版本的Redis镜像。 如果拉取遇到问题请参考【Linux AnolisOS】关…...

用deepseek学大模型04-模型可视化与数据可视化

deepseek.com: pytorch可视化工具 生成神经网络图 在 PyTorch 中,可视化神经网络结构的常用工具和方法有以下几种,以下将详细介绍它们的用法: 1. TensorBoard (PyTorch 官方集成) PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard&a…...

一周学会Flask3 Python Web开发-post请求与参数获取

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili app.route 装饰器默认只支持get请求。假如我们要让绑定的视图函数支持其他请求方式,我们可以在methods属性里配置…...

第3章 .NETCore核心基础组件:3.1 .NET Core依赖注入

3.1.1 什么是控制反转、依赖注入 杨老师在书中进行了一系列的文字阐述,总结一下就是:软件设计模式中有一种叫做【控制反转】的设计模式,而依赖注入是实现这种设计模式的一个很重要的方式。也就是说学习依赖注入,是学习怎样实现控…...

cs*n 网页内容转为html 加入 onenote

csdn上有好用的内容,我们怎么将它们加到 onenote 里吃灰呢。 一、创建 新html create_html.py import sysdef create_html_file(filename):# 检查是否提供了文件名if not filename:print("请提供HTML文件名")return# 创建HTML内容html_content f"…...

平板作为电脑拓展屏

有线串流(速度更快) spacedesk 打开usb对安卓的连接 用usb线直接连接电脑和平板 无线串流(延迟高,不推荐) todesk pc和手机端同时下载软件,连接后可以进行远程控制或扩展屏幕 spacedesk 连接到同一个…...

Pytorch实现论文之一种基于扰动卷积层和梯度归一化的生成对抗网络

简介 简介:提出了一种针对鉴别器的梯度惩罚方法和在鉴别器中采用扰动卷积,拟解决锐梯度空间引起的训练不稳定性问题和判别器的记忆问题。 论文题目:A Perturbed Convolutional Layer and Gradient Normalization based Generative Adversarial Network(一种基于扰动卷积层…...

关系数据库标准语言SQL

1.SOL称为结构化查询语言,它是由1974年由Boyce和Chamberlin提出的,1975年至1979年IBM公司的San Jose Research Laboratory研制了关系数据库管理系统的原型系统SystemR,并实现了这种语言。 2.SQL(Structured Ouery Language)称为结构化查询语言 3.SQL数…...

AI工具篇:利用DeepSeek+Kimi 辅助生成综述汇报PPT

随着科研和学术报告需求的增加,如何高效地准备一份结构清晰、内容充实的PPT已成为许多研究者的挑战。 传统的PPT制作过程繁琐,需要大量文献收集、数据分析和设计工作,而AI工具能够帮助提升效率,减少重复劳动。 本文将介绍如何使用…...

学习总结2.18

在原本基本的数船的基础上,增加了船不能畸形的要求,船只能是矩形,由此需要在dfs找船前确定是否有畸形船 .* ** *. ** ** .* ** *. 出现畸形船的情况如上图,即两艘船有一个交集时,此时就可以判断出bad pl…...

electron下载文件,弹窗选择下载路径,并通知下载进度

1:在window.js中 引入session import { app, BrowserWindow, ipcMain, dialog, shell, session } from electron; 2:发送下载请求 // 在主进程监听渲染进程发送的 start-download 事件ipcMain.on(start-download, async (event, downloadUrl) > {l…...

【Docker】容器被停止/删除的方式及命令:全面解析与实践指南

文章目录 引言一、容器的生命周期二、停止容器的命令及方式1. docker stop 命令2. docker kill 命令3. docker pause 和 docker unpause 命令4. docker restart 命令 三、删除容器的命令及方式1. docker rm 命令2. docker container prune 命令3. docker rm 与 docker rmi 的区…...

线上就医全流程医药机构接入文档接口代码-医保就医接口php-demo版本

2025年2月18日11:28:03 国密算法开发库推荐 lpilp/guomi 我测试过php 7.2 - 8.0都可以兼容,如果有能力可以自己开发 目前已经开发了核心的接口的测试demo,并且封装了工具类直接写业务逻辑即可,并且已经有线上项目在使用,如果需要demo代码可…...

缓存三大问题及其解决方案

缓存三大问题及其解决方案 1. 前言 ​ 在现代系统架构中,缓存与数据库的结合使用是一种经典的设计模式。为了确保缓存中的数据与数据库中的数据保持一致,通常会给缓存数据设置一个过期时间。当系统接收到用户请求时,首先会访问缓存。如果缓…...

大语言模型常用微调与基于SFT微调DeepSeek R1指南

概述 大型语言模型(LLM,Large Language Model)的微调(Fine-tuning)是指在一个预训练模型的基础上,使用特定领域或任务的数据对模型进行进一步训练,以使其在该领域或任务上表现更好。微调是迁移…...

LabVIEW的吞雨测控系统

本案例介绍了一种基于LabVIEW开发的吞雨测控系统,该系统通过建模仿真分析不同控制器模式下的阶跃信号响应,从而选择了最适合的控制器。为了有效解决在控制流量过程中出现的振荡收敛和流量信号大扰动问题,系统采用了改进的积分分离PID算法&…...

redis基础命令

基于内存的数据存储系统 redis中数据以键值对存储的 键区分大小写 redis默认都是使用字符串存储数据 //启动服务 redis-server //连接客户端 redis-cli //连接客户端,--raw表示以原始的形式显示内容 redis-cli --rawset keyname valueget keynamedel keyname //…...

基于Java+SpringBoot+Vue的前后端分离的校园闲置物品交易网站

基于JavaSpringBootVue的前后端分离的校园闲置物品交易网站 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接…...

K8s 证书认知(K8s Certificate Awareness)

K8s 证书认知 在谈起 Kubernetes 证书时,总感觉其涵盖的内容繁多,仿佛千头万绪,让人不知该从何处着手阐述。为了更好地理清思路,本文将对相关内容进行系统的梳理和记录。 1、证书及链路关系 Kubeadm部署的集群,K8s …...

前x-ai首席科学家karpathy的从零构建ChatGPT视频学习笔记--8000字长图文笔记预警(手打纯干货,通俗易懂)

2025.2.17晚上21:57看完了整个视频,作为一个ai专业的学生虽然每天都在用ai,但是对于其背后的原理却不是那么清楚,而卡帕西的这支视频却让我醍醐灌顶,而且全程听起来很舒服,没有知识强行进入脑子的痛感,在他…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...