docker部署redis
docker 部署redis教程
一:创建
- 拉取镜像
docker pull redis:7.0.10
- 在宿主机的 /var/lib/docker/volumes/redis-config/_data/目录下创建一个redis的配置文件
cd /var/lib/docker/volumes/redis-config/_data/
vim redis.conf
配置文件的内容为
appendonly yes
port 6379
bind 0.0.0.0
replicaof no one
• 启用AOF持久化,确保数据安全;
• 使用默认端口6379对外提供服务;
• 监听所有网络接口,允许远程访问;
• 明确设置为主节点,不作为从节点存在。
注意安全提示:
如果在公网环境部署Redis,建议启用安全认证(如设置密码),并严格控制访问IP,避免安全隐患。
- 如果/var/lib/docker/volumes没有redis-config,创建数据卷
docker volume create redis-config
- 创建容器
docker run -d -p 6379:6379 --restart=always -v redis-config:/etc/redis/config -v redis-data:/data --name redis redis redis-server /etc/redis/config/redis.conf
解释一下docker run这条命令
整体含义: 此命令会启动一个名为redis的Redis容器,持久化数据,并挂载配置文件,容器运行在后台,并且在Docker或主机重启后总是自动启动。 ⸻
参数详细解释: • docker run • 表示创建并运行一个新容器。 • -d • 容器以后台模式(detached mode)运行,不占用终端。 • -p 6379:6379
• 将容器的6379端口映射到宿主机的6379端口,使外部网络能访问Redis服务。 • --restart=always
• 如果容器因错误、主机重启或Docker服务重启而停止,容器将自动重新启动,保证Redis服务持续运行。 • -v
redis-config:/etc/redis/config
• 创建或使用名为redis-config的Docker卷(volume),并挂载到容器的/etc/redis/config目录。
• 用于存放Redis配置文件,比如你的redis.conf。 • -v redis-data:/data
• 创建或使用名为redis-data的Docker卷(volume),并挂载到容器的/data目录。
• 存储Redis持久化的数据(如AOF文件、RDB快照)。 • --name redis
• 为容器指定名称为redis,方便后续管理容器,如docker stop redis、docker logs redis等。
• redis • 指定使用Docker官方的Redis镜像(默认拉取最新镜像)。 • redis-server
/etc/redis/config/redis.conf
• 启动Redis服务时,使用自定义配置文件/etc/redis/config/redis.conf,而不是Redis镜像默认配置。
⸻
- 目录结构说明:
容器内的目录结构为:
/etc/redis/config/redis.conf # Redis配置文件
/data # Redis持久化数据
在宿主机上,这些数据实际存储于Docker的volume中,物理位置由Docker管理。
⸻
- 使用注意事项:
• 在宿主机使用docker volume ls能查看创建的卷(redis-config, redis-data)。
• 使用docker logs redis可查看容器日志。
• 容器内部文件更新或修改(如修改配置文件)时,记得重启容器docker restart redis使配置生效。
• 如果需要查看Redis配置文件内容,使用:
docker exec -it redis cat /etc/redis/config/redis.conf
⸻
- 安全提醒:
• Redis默认无密码,且当前配置监听所有网络接口(0.0.0.0):
• 为避免安全风险,请在配置文件redis.conf中开启Redis认证:
requirepass 你的密码
• 生产环境务必设置认证,避免被未授权访问造成数据泄露。
二:测试
1 查看当前运行的状态
docker ps

2 进入容器设置一个数据
docker exec -it redis /bin/bash
redis-cli
set k1 test
3 随便找个redis客户端工具, 我这里直接用navicat了
和连接mysql 差不多 直接ip+端口就可以, 有数据就ok了


更多推荐
所有评论(0)