Docker 部署 redis教程,附带部分小建议,防止踩坑
Docker 部署 redis,附带部分小建议,防止踩坑
跟所有人一样,我们先从docker基本命令开始
一、拉取redis镜像(配图来自菜鸟,其实截图没多大意义,对比看下)
# 默认就拉取lastest版本,如有特殊需求请加版本号
docker pull redis
# docker pull redis:3.2
二、确认一下是否拉取成功
docker images
成功了就可以看到这一行,那一串长字符串就是imageId
三、运行redis之前,docker run配置解释
好了,前两步都是基操,没什么可说的,到了运行redis这步,有很多人就开始犯迷糊,到底怎么样来运行一个可供使用的redis呢?如果只想快速开始一个:没有密码、默认端口6379,本地可连接的redis实例,你可以直接看第五步,但我强烈建议你不要这么干,除非你的redis就是在本地玩玩,不丢在线上服务器上。
我们先看我自己使用的的完整版启动脚本,再来告诉你,配置里的启动项都是干嘛的
docker run -d -p 6379:6379 -v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf
docker run
启动
-d
将docker容器以后台启动的方式启动(除非你想看看容器启动起来马上看到里面的样子),启动后返回容器的ID
-p 6379:6379
将容器内部的端口6379映射到宿主机的6379端口
-v /data/docker/redis/conf/redis.conf :/etc/redis/redis.conf
-v 或者 --volume ,将宿主机卷绑定挂载到容器中,简单点说就是和端口一样,把宿主机的文件映射到容器中,前提是这个文件存在,否则只是一个空卷
redis
启动的redis镜像名称,如果不加tag,就是默认的lastest,如果有多个版本,请指定,比如 redis:3.2
上文启动命令并未指定此容器的名字,docker在启动后会随机分配一个容器名,如果需要自定义,则在命令里加上 ** --name redis-test ** ,redis-test 是我起的一个名字
redis-server /etc/redis/redis.conf
容器运行命令的最后,就是执行容器内部的命令了,启动过redis的同学都知道,这个命令的意思就是以 /etc/redis/redis.conf 为配置项启动redis了
四、运行redis
经过上文的参数解释,你应该知道了,redis运行最主要的问题就是要把这个配置文件给挂载出来,那么我们在运行之前,就要提前 在 /data/redis/conf 目录下(这只是我的目录,你可以任意目录,记得替换掉启动参数里的路径)新建一个 redis.conf , 这里同样给出一份配置(配置可以去参考redis的详细配置)
# 这里要设置成no,因为我们容器本身就已经是-d启动了,如果设置成yes,会无法启动起redis
daemonize no
# 这样设置可以让外界连接到redis,如果不想对公网暴露,可以设置成bind 127.0.0.1 ,但也有坑,坑见下文
bind 0.0.0.0
# 写入文件,不开启,一重启数据就没了
appendonly yes
# 运行5个连接存活,防止出现长时间不连,需要重连的情况
tcp-keepalive 5
# 原则上必须填写,你要是对公网开放还没有密码,那就是裸奔
requirepass 你的密码
运行后,此redis实例可以使用了,测试是否成功,执行以下命令,直接连接名称为redis-test的容器并执行 redis-cli命令
docker exec -it redis-test redis-cli
成功,则看到连接到redis
127.0.0.1:6379>
输入 auth 你的密码 获取权限, OK则没有问题
127.0.0.1:6379>auth 你的密码
OK
同样的,可以测试从本地连接了。
五、启动一个最简单的redis实例,无密码
$ docker run -itd --name redis-test -p 6379:6379 redis
六、不踩坑姿势
如果要对外网关闭,只对内网开放,你以为的:bind 127.0.0.1 就可以?
- 常见错误:容器内设置bind 127.0.0.1 仅仅是对容器绑定,那会造成宿主机无法访问
容器是不识别宿主机的local IP的,所以你想绑定bind 192.X.X.X 也同样不可行
解决思路:
- 打通宿主机和容器的网络,可在启动的时候使用--net=host,直接让容器使用宿主机的IP和host
- 在iptables层(或者阿里云的安全组类似的)进行端口的控制,决定暴露给谁使
- 密码强度增加,端口更换成其他的,也可以解决不少安全性,这样开放就开放减低了被扫描的可能性
数据没有保存出来,想直接抓aof数据
- 挂载出来即可,和conf同理
Docker 部署 redis教程,附带部分小建议,防止踩坑的更多相关文章
- 13.在项目中部署redis企业级数据备份方案以及各种踩坑的数据恢复容灾演练
到这里为止,其实还是停留在简单学习知识的程度,学会了redis的持久化的原理和操作,但是在企业中,持久化到底是怎么去用得呢? 企业级的数据备份和各种灾难下的数据恢复,是怎么做得呢? 1.企业级的持久化 ...
- docker(部署常见应用):docker部署redis
上节回顾:docker(部署常见应用):docker部署mysql docker部署redis:4.0 # 下载镜像 docker pull redis:4.0 # 查看下载镜像 docker ima ...
- (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...
- docker部署redis主从和哨兵
docker部署redis主从和哨兵 原文地址:https://www.jianshu.com/p/72ee9568c8ea 1主2从3哨兵 一.前期准备工作 1.电脑装有docker 2.假设本地i ...
- 通过 Docker 部署 Redis 6.x 集群
要点步骤总结: # 这里演示使用同一台主机上 # 创建各节点存储路径 mkdir -p /opt/redis/{7000,7001,7002,7003,7004,7005} # 创建各节点配置文件 c ...
- 我的微信小程序入门踩坑之旅
前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...
- 小程序 & taro 踩坑指南
小程序 & taro 踩坑指南 微信开发者工具, 不支持 react bug https://github.com/NervJS/taro/issues/5042 solution just ...
- Docker部署Redis容器
从仓库下载镜像 sudo docker pull redis 创建容器(前提:将redis.conf文件放入到/Users/chengang/docker/redis目录里面) docker ru ...
- 利用docker部署redis集群
目录 一.首先配置redis.conf文件,... 1 1.获取配置文件... 1 2.修改各配置文件的参数... 2 二.下载redis镜像.启动容器... 2 1.创建网络... 2 2.拉取镜像 ...
随机推荐
- JavaScript Object的复制
var obj = { a: 1, b: 2, c: { d: 3, e: 4, f: function () { console.log("对象复制"); } } } 1. fo ...
- C/C++编程笔记:C语言自增(++)和自减(--)运算符详解,笔记分享
一个整数类型的变量自身加 1 可以这样写: a = a + 1; 或者 a += 1; 不过,C语言还支持另外一种更加简洁的写法,就是: a++; 或者 ++a; 这种写法叫做自加或自增,意思很明确, ...
- BSOJ 5553 wangyurzee的树 prufer序列 容斥
BSOJ我也不知道在哪. 容易想到容斥. 考虑不合法的方案 想到强制某个点的度数为限制即可. 这样就变成了了总方案-一个不合法+两个不合法-3个......的模型了. 坑点 当强制两个相同的点时 方案 ...
- 4.28 省选模拟赛模拟赛 最佳农场 二维卷积 NTT
第一次遇到二维卷积 不太清楚是怎么做的. 40分暴力比对即可. 对于行为或者列为1时 容易想到NTT做快速匹配.然后找答案即可. 考虑这是一个二维的比对过程. 设\(f_{i,j}\)表示以i,j为右 ...
- JS 常用方法汇总(不定期更新)
/** * 获取当前日期 * @returns {string} */ Common.currentDate = function () { // 获取当前日期 var date = new Date ...
- 数据分析学习 third week (7.29~8.4)
概率分布简介 简单地介绍下常用概率分布的理论知识. 基础概念 1.概率 概率直观上是指一个事件发生可能性大小的数量指标 概率的统计定义:在不变的条件下,重复进行$n$次试验,事件$A$发生的频率稳定在 ...
- adb如何连接Mac版腾讯手游助手
Mac版腾讯手游助手,的端口是6555: 所以使用adb connect 127.0.0.1:6555 进行连接
- Spring Boot上传文件(带进度条)
Spring Boot 上传文件(带进度条)# 配置文件 spring: freemarker: template-loader-path: classpath:/static/ ##Spring B ...
- JS 鼠标、键盘事件对象
鼠标事件对象 mouseEvent鼠标事件对象 e.clientX 在可视区的x和y的坐标 e.pageX 在页面文档的X和Y的坐标 <script> docume ...
- Java—Map接口中的常用方法
Map接口与Collection接口的区别 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储. Map中的集合,元素是成对存在的(理解为夫妻).每 ...