【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这三种重启策略的详细介绍:
看下策略之间先看下面的注意:
-
always策略
-
行为:无论容器的退出原因是什么,Docker都会自动重启该容器。
-
适用场景:这个策略适用于需要持续运行的关键服务,如Web服务器、数据库、消息队列等。它确保这些服务在发生任何故障时都能自动恢复,从而提高系统的可靠性和可用性。
-
命令示例:
docker run --restart=always (容器id或者容器名)
-
-
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
的详细解释:
-
镜像名称:
redis
是镜像的名称,它指的是 Redis 数据库系统。 -
标签(Tag):
latest
是镜像的标签,用于指定要拉取的镜像版本。latest
标签通常指向该镜像的最新稳定版本。然而,需要注意的是,latest
标签可能会随着 Redis 的新版本的发布而更新,因此它可能不是完全固定的。 -
官方镜像:由于
redis:latest
是官方镜像的一部分,因此你可以放心地使用它,因为它经过了官方的测试和验证。 -
更新频率:随着 Redis 的新版本发布,
redis:latest
标签所指向的镜像也会相应更新。这意味着,如果你经常拉取redis:latest
镜像,你将获得 Redis 的最新功能和修复。
使用 redis:latest
镜像的优点包括:
-
方便性:由于
latest
标签始终指向最新版本,因此你无需指定版本号即可获得最新的 Redis 镜像。 -
兼容性:官方镜像通常与 Redis 的最新版本保持兼容,因此你可以放心地在生产环境中使用它。
然而,使用 redis:latest
镜像也有一些潜在的风险:
-
不稳定性:由于
latest
标签指向的是最新版本,因此它可能包含一些尚未被充分测试的新功能和修复。这可能导致一些未知的问题或不稳定的行为。 -
版本变化:由于
latest
标签可能会随着新版本的发布而更新,因此你的容器可能会在不通知的情况下自动升级到新版本。这可能会导致与现有代码或配置的兼容性问题。
为了降低这些风险,你可以考虑使用具有特定版本号的 Redis 镜像(例如 redis:6.2
),以确保你的容器始终运行在同一版本的 Redis 上。这样可以提供更好的稳定性和可预测性。