docker-redis
-
理解挂载的重要性
- 在使用Docker运行Redis时,挂载数据卷是很有必要的。挂载数据卷可以将Redis容器内的数据(如数据库文件、配置文件等)存储到宿主机上,这样即使容器被删除或重新创建,数据也不会丢失,并且方便在宿主机上对数据进行备份、迁移和管理。
-
准备工作
- 确保已经安装了Docker并且处于运行状态。同时,确定要挂载的宿主机目录路径,例如,你可以在宿主机上创建一个目录专门用于存储Redis数据,如
/data/redis
(在Linux系统下)或者D:\redis\data
(在Windows系统下)。
- 确保已经安装了Docker并且处于运行状态。同时,确定要挂载的宿主机目录路径,例如,你可以在宿主机上创建一个目录专门用于存储Redis数据,如
-
基本的挂载方式(以Linux为例)
- 挂载数据目录:
- 当运行Redis容器时,使用
-v
参数来挂载数据卷。以下是一个基本的命令示例:
- 当运行Redis容器时,使用
- 挂载数据目录:
docker run -itd --name myredis - p 6379:6379 - v /data/redis:/data redis
- 解释:
- `-d`:让容器在后台以守护进程模式运行。
- `--name my - redis`:为容器命名为“my - redis”。
- `-p 6379:6379`:将容器内部的6379端口(Redis的默认端口)映射到宿主机的6379端口,这样就可以通过宿主机的6379端口访问容器内的Redis服务。
- `-v /data/redis:/data`:这是挂载数据卷的部分。将宿主机的`/data/redis`目录挂载到容器内的`/data`目录。在Redis容器中,`/data`目录通常是存储数据的地方,如RDB快照文件和AOF日志文件(如果启用了相应的持久化方式)。
- `redis`:是要使用的Redis镜像名称。如果需要指定版本,可以写成`redis:version`,例如`redis:6.0`表示使用Redis 6.0版本的镜像。
- 挂载配置文件(可选但很有用)
- 创建和修改配置文件:
- 在宿主机上创建一个Redis配置文件,例如
/data/redis/redis.conf
(在Linux系统下)。可以从Redis官方文档获取配置模板,然后根据自己的需求修改配置参数,如设置密码、持久化方式、最大连接数等。
- 在宿主机上创建一个Redis配置文件,例如
- 挂载配置文件到容器:
- 在运行容器时,将配置文件挂载到容器内对应的配置文件位置。通常在Redis容器中,配置文件位于
/etc/redis/redis.conf
。命令示例如下:
- 在运行容器时,将配置文件挂载到容器内对应的配置文件位置。通常在Redis容器中,配置文件位于
- 创建和修改配置文件:
docker run -itd --name myredis -p 6379:6379 -v /data/redis:/data -v /data/redis/redis.conf:/etc/redis/redis.conf redis redis - server /etc/redis/redis.conf
- 解释:
- 新增的`-v /data/redis/redis.conf:/etc/redis/redis.conf`部分是挂载配置文件。将宿主机的`/data/redis/redis.conf`文件挂载到容器内的`/etc/redis/redis.conf`位置。
- 最后的`redis - server /etc/redis/redis.conf`部分是指定容器启动时使用挂载的配置文件来启动Redis服务。
- 在Windows系统下挂载(以PowerShell为例)
- 挂载数据目录和配置文件(类似Linux但路径格式不同):
- 假设在宿主机上创建了
D:\redis\data
用于存储数据,D:\redis\config\redis.conf
用于存储配置文件,命令示例如下:
- 假设在宿主机上创建了
- 挂载数据目录和配置文件(类似Linux但路径格式不同):
docker run -d --name my - redis - p 6379:6379 - v D:\redis\data:/data - v D:\redis\config\redis.conf:/etc/redis/redis.conf redis redis - server /etc/redis/redis.conf
- 这个命令的功能和在Linux下类似,只是路径格式是Windows格式。注意,在Windows系统下,文件和目录的权限管理方式与Linux不同,但在Docker挂载的场景下,主要确保宿主机目录有合适的读写权限,以便Redis容器能够正常读写挂载的文件和目录。
- 验证挂载是否成功
- 查看容器内挂载点的文件:
- 可以通过进入容器内部来查看挂载是否成功。在命令行中,先使用
docker exec -it my - redis bash
(对于Linux容器)或者docker exec -it myredis powershell
(对于Windows容器)进入容器。然后,在容器内部查看挂载的目录和文件,例如在容器内检查/data
目录下是否有Redis的数据文件,或者查看/etc/redis/redis.conf
文件是否是从宿主机挂载过来的配置文件内容。
- 可以通过进入容器内部来查看挂载是否成功。在命令行中,先使用
- 检查宿主机挂载目录的变化:
- 在Redis容器运行过程中,对Redis进行一些操作(如写入数据等),然后检查宿主机挂载的目录(如
/data/redis
或者D:\redis\data
)下是否有相应的数据文件更新,以此来验证数据是否正确地存储到了宿主机挂载的目录中。
- 在Redis容器运行过程中,对Redis进行一些操作(如写入数据等),然后检查宿主机挂载的目录(如
- 查看容器内挂载点的文件:
cd D:\npy_study
mkdir redis
cd redis
mkdir data
cd ..
mkdir config
cd config
vim redis.conf
docker run -d --name redisv1 -p 6378:6379 -v D:\npy_study\redis\data:/data -v D:\npy_study\redis\config\redis.conf:/etc/redis/redis.conf redis
docker exec -it myredis powershell
netstat -ano | findstr :3306
PS D:\npy_study\redis\config> netstat -ano | findstr :6378
进入docker redisv1 bash
C:\Windows\System32>docker exec -it redisv1 bash
获取密码
cat /etc/redis/redis.conf | grep requirepass
redis 里面:
root@2aedb1365f5b:/# redis-cli
127.0.0.1:6379>
127.0.0.1:6379> HSET runoobkey name "redis tutorial" desc "redis basic commands for caching" likes 20 visitors 2000
(integer) 4
127.0.0.1:6379> HGETALL runoobkey
1) "name"
2) "redis tutorial"
3) "desc"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "2000"
127.0.0.1:6379> hget runoobkey name
"redis tutorial"
127.0.0.1:6379> hkeys runoobkey
1) "name"
2) "desc"
3) "likes"
4) "visitors"
原文地址:https://blog.csdn.net/F13122298/article/details/144322383
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!