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

【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 上。这样可以提供更好的稳定性和可预测性。


http://www.kler.cn/a/552193.html

相关文章:

  • leaflet前端初始化项目
  • 【ARTS】【LeetCode-977】有序数组的平方
  • 单元测试整理
  • 2023年区块链职业技能大赛——区块链应用技术(一)模块一
  • Ubuntu 24或最新Ubuntu 安装 英伟达显卡驱动
  • 共享储能系统在新能源消纳中的应用及能源区块链的数据共享与全同态加密信息披露机制
  • 【ClickHouse 特性及应用场景】
  • 【git】已上传虚拟环境的项目更改成不再上传虚拟环境
  • 智能选择+NAT
  • META-INF 文件夹用途
  • 通过检索增强生成技术与大语言模型推进网络事件时间线分析
  • 2025年新型智慧城市整体解决方案下载:顶层规划设计,应用总体建设方案
  • uniapp Flex 布局使用记录
  • Windows Docker Desktop部署MaxKB详细教程
  • 2025-02-18 学习记录--C/C++-PTA 7-24 约分最简分式
  • QT C++ modbus 两个字 合成 32位整数
  • openCV中如何实现滤波
  • 基于Electron+Vue3创建桌面应用
  • 3.10 企业级AI内容生成引擎:从策略到落地的全链路技术指南
  • 调用openssl实现加解密算法