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.拉取镜像 ...
随机推荐
- luogu P5892 [IOI2014]holiday 假期 决策单调性优化dp 主席树
LINK:holiday 考虑第一个subtask. 容易想到n^2暴力枚举之后再暴力计算答案. 第二个subtask 暴力枚举终点可以利用主席树快速统计答案. 第三个subtask 暴力枚举两端利用 ...
- luogu P3180 [HAOI2016]地图 仙人掌 线段树合并 圆方树
LINK:地图 考虑如果是一棵树怎么做 权值可以离散 那么可以直接利用dsu on tree+树状数组解决. 当然 也可以使用莫队 不过前缀和比较难以维护 外面套个树状数组又带了个log 套分块然后就 ...
- 5.22 noip模拟赛
本来我是不想写的,无奈不会写.蒟蒻 考场就是想不出来 今天得到了100分额外水过了100分我是真的失败.还有一个根本不会check 感觉自己非常之菜. 这道题是这样的 还行吧比较有意思 首先确立一个真 ...
- electron开发 - mac平台的打包和签名 - 针对electron-builder的自动更新
配合自动更新 - 安装包签名(mac)(待补充) 前提:实现自动更新需要签名 一.本地开发调试mac签名(无需具有权限的appple账号) 打开xcode,xcode -> preference ...
- 电力规约DL/T 654 2007多功能电表通信协议 调试工具
DL/T 654 2007多功能电表通信协议 调试工具 最近调试DL/T654 2007电力规约,在网上找到一个比较好用的工具,分享给大家,希望对大家有帮助. CSDN需要积分,我传百度网盘了, 内含 ...
- boost之signal的使用
文章目录 简介 代码 模板实现: 测试代码 运行结果 简介 boost是C++的一个扩展库,被称为C++准标准库,里面的组件很丰富,并且引用方便,85%的组件只需要引用头文件即可使用. 并且在嵌入式系 ...
- 033_go语言中的打点器
代码演示 package main import "fmt" import "time" func main() { ticker := time.NewTic ...
- SonarQube 跳过指定检查
SonarQube 跳过指定检查 如何让 SonarQube 忽略某些检查规则 环境 演示环境参考前边的文章 SonarQube 扫描 Java 代码 步骤 我们已经扫描一个 Java 项目 有 6 ...
- Python datetime 转 JSON
Python datetime 转 JSON Python 中将 datetime 转换为 JSON 类型,在使用 Django 时遇到的问题. 环境: Python2.7 代码: import js ...
- Linux安装配置PHPmyadmin
进官网下载zip安装包 wget https://files.phpmyadmin.net/phpMyAdmin/5.0.1/phpMyAdmin-5.0.1-all-languages.zip 安装 ...