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

六、不踩坑姿势

  1. 如果要对外网关闭,只对内网开放,你以为的:bind 127.0.0.1 就可以?

    • 常见错误:容器内设置bind 127.0.0.1 仅仅是对容器绑定,那会造成宿主机无法访问

    容器是不识别宿主机的local IP的,所以你想绑定bind 192.X.X.X 也同样不可行

    • 解决思路:

      1. 打通宿主机和容器的网络,可在启动的时候使用--net=host,直接让容器使用宿主机的IP和host
      2. 在iptables层(或者阿里云的安全组类似的)进行端口的控制,决定暴露给谁使
      3. 密码强度增加,端口更换成其他的,也可以解决不少安全性,这样开放就开放减低了被扫描的可能性
  2. 数据没有保存出来,想直接抓aof数据

    1. 挂载出来即可,和conf同理

Docker 部署 redis教程,附带部分小建议,防止踩坑的更多相关文章

  1. 13.在项目中部署redis企业级数据备份方案以及各种踩坑的数据恢复容灾演练

    到这里为止,其实还是停留在简单学习知识的程度,学会了redis的持久化的原理和操作,但是在企业中,持久化到底是怎么去用得呢? 企业级的数据备份和各种灾难下的数据恢复,是怎么做得呢? 1.企业级的持久化 ...

  2. docker(部署常见应用):docker部署redis

    上节回顾:docker(部署常见应用):docker部署mysql docker部署redis:4.0 # 下载镜像 docker pull redis:4.0 # 查看下载镜像 docker ima ...

  3. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  4. docker部署redis主从和哨兵

    docker部署redis主从和哨兵 原文地址:https://www.jianshu.com/p/72ee9568c8ea 1主2从3哨兵 一.前期准备工作 1.电脑装有docker 2.假设本地i ...

  5. 通过 Docker 部署 Redis 6.x 集群

    要点步骤总结: # 这里演示使用同一台主机上 # 创建各节点存储路径 mkdir -p /opt/redis/{7000,7001,7002,7003,7004,7005} # 创建各节点配置文件 c ...

  6. 我的微信小程序入门踩坑之旅

    前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...

  7. 小程序 & taro 踩坑指南

    小程序 & taro 踩坑指南 微信开发者工具, 不支持 react bug https://github.com/NervJS/taro/issues/5042 solution just ...

  8. Docker部署Redis容器

    从仓库下载镜像 sudo docker pull redis   创建容器(前提:将redis.conf文件放入到/Users/chengang/docker/redis目录里面) docker ru ...

  9. 利用docker部署redis集群

    目录 一.首先配置redis.conf文件,... 1 1.获取配置文件... 1 2.修改各配置文件的参数... 2 二.下载redis镜像.启动容器... 2 1.创建网络... 2 2.拉取镜像 ...

随机推荐

  1. 4.9 省选模拟赛 生成树求和 变元矩阵树定理 生成函数 iDFT 插值法

    有同学在loj上找到了加强版 所以这道题是可以交的.LINK:生成树求和 加强版 对于30分 爆搜 可实际上我爆搜只过了25分 有同学使用按秩合并并茶几的及时剪枝通过了30分. const int M ...

  2. 数据结构C语言实现----选择排序

    选择排序 第一步:从一串无序数字串中选一个最小的与第一个数交换位置 第二步:从剩下的数字中选一个最小的与第二个数交换位置 第三步:从剩下的数字中选一个最小的与第三个数字交换位置 以此类推... 运行结 ...

  3. day12. 闭包

    一.概念 """ 如果内函数使用了外函数的局部变量, 并且外函数把内函数返回出来的过程,叫做闭包 里面的内函数是闭包函数 """ 二.基本语 ...

  4. Centos7 如何通过win10 的远程桌面连接进行远程访问

    首先,如果安装测centos7是已经安装了GNOME 或者 KDE 桌面, 则只需要再安装xrdp就可以了. 直接通过yum install xrdp 是不行的,因为xrdp 不在默认源中   先配置 ...

  5. Spring 注解学习 详细代码示例

    学习Sping注解,编写示例,最终整理成文章.如有错误,请指出. 该文章主要是针对新手的简单使用示例,讲述如何使用该注释,没有过多的原理解析. 已整理的注解请看右侧目录.写的示例代码也会在结尾附出. ...

  6. LINUX --- echo修改GPIO状态

    GPIO sysfs Interface The GPIO sysfs interface allows users to manipulate any GPIO from userspace (al ...

  7. JS 导航条切换案例

    HTML代码: <div class="tab"> <div class="tab_list"> <ul> <li c ...

  8. Cenos系统防火墙开放指定端口

    1.查看已经开放的端口 firewall-cmd --list-ports 2.开启指定端口 firewall-cmd --zone=public --add-port=2181/tcp --perm ...

  9. Zookeeper学习(二)

    一.Znode节点属性 dataVersion 数据版本, 每次当 Znode 中的数据发生变化的时候, dataVersion都会自增一下cversion 节点版本, 每次当 Znode 的节点发生 ...

  10. JavaScript package.json里添加git-cz

    git-cz官网 0.目的 => 替代git commit, 丰富提交的内容 1.安装包 npm install commitizen cz-conventional-changelog --s ...