Docker创建redis容器

Docker运行Redis

一:Docker安装Redis

docker search redis

二:Docker拉取镜像

下面两个命令看自己的需求

docker pull <镜像名称><版本号> #需要自己清楚自己需要什么般本的redis

docker pull redis  #这个命令会自动下载最新版本的redis 省事 推荐

三:Docker挂载配置文件

接下来就是将redis到的配置文件进行挂载,以配置文件方式启动redis容器。(挂载:即将宿主的文件和容器内部目录相关联,相互绑定,在宿主机内修改文件的话也随之修改容器内部文件)
1)、挂载redis的配置文件
2)、挂载redis的持久化文件
因为 redis 默认配置你会发现只能够本地连接,不能进行远程访问,使用 Redis Desktop Manager连接都会报错,因此需要手动挂载 redis 配置文件
新建data和conf两个文件夹,位置随意。但要记住自己创建的位置

mkdir -p /home/redis/data
mkdir -p /root/docker/redis/conf

四:增加配置文件redis.conf

在刚才新建的/root/docker/redis/conf中新建文件redis.conf,内容如下:

bind 0.0.0.0		# 只允许来自bind指定网卡的Redis请求。如没有指定,则可以接受来自任意一个网卡的Redis请求
protected-mode no
port 6379				#redis的默认端口号
tcp-backlog 511
timeout 0				# 连接超时时间,单位秒;超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0

# tcp keepalive参数。如果设置不为0,就使用配置tcp的SO_KEEPALIVE值
# 使用keepalive有两个好处:
#  1) 检测挂掉的对端。降低中间设备出问题而导致网络看似连接却已经与对端端口的问题。
#  2) 在Linux内核中,设置了keepalive,redis会定时给对端发送ack。检测到对端关闭需两倍的设置值
tcp-keepalive 0
loglevel notice	#日志文件的等级
logfile ""			#日志文件的位置 这里没有配置
databases 16		#redis默认的数据库是16个

# 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
# 注释掉“save”这一行配置项就可以让保存数据库功能失效
# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化) 
# 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化) 
# 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)
save 900 1
save 300 10
save 60 10000

# 当RDB持久化出现错误后,是否依然进行继续进行工作,yes:不能进行工作,no:可以继续进行工作
stop-writes-on-bgsave-error yes

# 指定存储至本地数据库时是否压缩数据,耗cpu资源,默认为yes,Redis采用LZF压缩
# 如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大
rdbcompression yes

# 保存rdb文件时,是否进行错误检查校验。
# 从rdb格式的第五个版本开始,在rdb文件的末尾会带上CRC64的校验和。这跟有利于文件的容错性
# 但是在保存rdb文件的时候,会有大概10%的性能损耗,如果你追求高性能,可以关闭该配置。
rdbchecksum yes
dbfilename dump.rdb
dir ./	 	# 数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录							
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100

# AOF持久化,指定是否在每次更新操作后进行日志记录,默认redis是异步(快照)的把数据写入本地磁盘
# redis默认使用的是rdb方式持久化,此方式在许多应用中已足够用。
# 但redis如果中途宕机,会导致可能有几分钟的数据丢失,按照上面save条件来策略进行持久化
# Append Only File是另一种持久化方式,可提供更好的持久化特性。
# Redis会把每次写入的数据在接收后都写入appendonly.aof 文件
# 每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
appendonly yes
appendfilename "appendonly.aof"  #指定文件名称
appendfsync everysec   #AOF的三种持久化方式 no:不同步,always:每次数据变化写入,everysec:每秒中写入
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100	
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000		# slog log是用来记录redis运行中执行比较慢的命令耗时。
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""

hash-max-ziplist-entries 512		# 哈希表中元素(条目)总个数<=512个,采用ziplist,否则使用hash
hash-max-ziplist-value 64				# 哈希表中每个value的长度<=64字节时,采用ziplist,否则使用hash
list-max-ziplist-size -2
list-max-ziplist-entries 512		# list元素<=512个,采用ziplist,否则用linkedlist
list-max-ziplist-value 64				# list内某个元素大小<=64字节时,采用ziplist,否则用linkedlist
list-compress-depth 0
set-max-intset-entries 512			# set内元素数量<=512个,且都是整数型值,采用inset,否则使用hashtable
zset-max-ziplist-entries 128		# zset内元素数量<=128个,采用ziplist,否则用skiplist跳表
zset-max-ziplist-value 64				# zset内某个元素大小<=64字节时,采用ziplist,否则用skiplist跳表
hll-sparse-max-bytes 3000

# Redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,可以降低内存的使用。
# 当你的使用场景中,有非常严格的实时性需要,不能够接受Redis时不时的对请求有2毫秒的延迟的话
# 把这项配置为no。如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快的释放内存。
# 指定是否激活重置哈希,默认为开启
activerehashing yes

client-output-buffer-limit normal 0 0 0		# 对客户端输出缓冲进行限制,可以强迫那些不从服务器读取数据的客户端断开连接

# 对于slave client和 MONITER client,如果client-output-buffer一旦超过256mb
# 又或者超过64mb持续60秒,那么服务器就会立即断开客户端连接。
client-output-buffer-limit slave 256mb 64mb 60

# 对于pubsub client,如果client-output-buffer一旦超过32mb,又或者超过8mb持续60秒,
# 那么服务器就会立即断开客户端连接。
client-output-buffer-limit pubsub 32mb 8mb 60

# redis执行任务的频率为1s除以hz。
hz 10

# 在AOF重写时,如果打开了aof-rewrite-incremental-fsync开关,系统会每32MB执行一次fsync。
# 这对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值。
aof-rewrite-incremental-fsync yes 

requirepass 123456  ##设置密码 123456  可以更改

#这几个逼不能随便用,这样配置是把这几个家伙禁用了
rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""

五:创建容器并启动

注意路径,一定要注意路径

docker run --name redis -p 8081:8081 
						-v /root/docker/redis/data:/data 
      			-v /root/docker/redis/conf/redis.conf:/etc/redis/redis.conf 
         		-d redis redis-server /etc/redis/redis.conf  

–name:给容器起一个名
-p:端口映射 宿主机:容器
-v:挂载自定义配置 自定义配置:容器内部配置
-d:后台运行 redis-server --appendonly yes: 在容器执行redis-server启动命令,并打开redis持久化配置
查看是否启动成功 docker -ps

2023年11月16号 补记

1、为了保险,我们一般通常会给redis设置密码。之前的服务一直没有密码的。设置密码后登陆的方式和命令有一点不一样(配置文件已经修改过了,不用担心)

[root@VM-4-12-centos conf]# docker exec -it 8bf3 /bin/bash
root@8bf3152fd931:/data# redis-cli -h 106.54.224.114 -p 6379

2、第二点 我的数据会被清空缓存,但数据并没有保存下来,所以我在配置文件下面添加了两行禁止flush的指令

rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command CONFIG   ""
rename-command KEYS     ""

注意 完成上面的指令要重启容器才能生效
启动客户端

[root@VM-4-12-centos /]# docker exec -it 7d92cf78dff1 /bin/bash
root@7d92cf78dff1:/data# redis-cli -h 106.54.224.114 -p 6379 -a 123456 2>/dev/null
127.0.0.1:6379> 

-a 后跟的密码

六:容器内部连接进行测试

sudo docker exec -it 757225638cab /bin/bash

docker exec -it redis redis-cli				# 这里的redis是容器名称  也可以是容器id

进入容器后 可以测试一下密码

127.0.0.1:6379> auth 123456
OK

6.尝试进行删除redis容器
1.查看所有在运行的容器:

docker PS -a

2.停止运行Redis。停止命令

docker stop <容器ID或名称>

curl localhost:5000
curl: (7) Failed connect to localhost:5000; Connection refused

七:进行外部redis的连接

RedisInsight 这是redis官方推荐的 也是免费使用的
下载链接:https://redis.io/docs/connect/insight/
双击打开 点击
image.png
会出现下面的弹窗,输入对应的服务器地址、端口号、用户名和密码,先进行测试链接, 成功后,然后再点击 Add Redis Database
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/572357.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言入门课程学习笔记3

C语言入门课程学习笔记3 第12课 - if 语句编程练习第13课 - switch 多分支选择语句第14课 - 程序中的循环结构第15课 - while 语句编程练习第16课 - do...while 与 for第17课 - break 与 continue 本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程&#xff0c;图片全部来源于…

BUUCTF-Misc21

[GXYCTF2019]SXMgdGhpcyBiYXNlPw1 1.打开附件 是一个文本文档 里面有很多字符串 2.PuzzleSolver 用PuzzleSolver工具进行多组base64解码 3.得到flag 间谍启示录1 1.打开附件 是一个.iso文件 2.foremost 用foremost 分离文件 查看分离的文件 发现一个压缩包 3.运行 解压之…

Python | Leetcode Python题解之第47题全排列II

题目&#xff1a; 题解&#xff1a; class Solution:def permuteUnique(self, nums: List[int]) -> List[List[int]]:def dfs(x):if x len(nums) - 1:res.append(list(nums)) # 添加排列方案returndic set()for i in range(x, len(nums)):if nums[i] in dic: continue …

历史遗留问题-Oracle 19c RAC 安装时节点连接性问题

测试服务器的二节点数据库宕掉了&#xff0c;原因不明&#xff0c;需要产环境重新安装。我想上次在自己虚拟机安装实验过一次&#xff0c;应该一天能搞定&#xff0c;事实证明&#xff0c;你永远有学不完的bug&#xff01;&#xff01;&#xff01;&#xff01; 首先查看一下系…

算法基础:并查集详解

并查集 并查集&#xff0c;在一些有N个元素的集合应用问题中&#xff0c;我们通常是在开始时让每个元素构成一个单元素的集合&#xff0c;然后按一定顺序将属于同一组的元素所在的集合合并&#xff0c;其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学…

Web前端开发之HTML_2

HTML5简介与基础骨架标题标签标签之段落、换行、水平线标签之图片标签之超文本链接标签之文本列表标签之有序列表列表标签之无序列表 1. HTML5简介与基础骨架 1.1 HTML5简介 HTML5是用来描述网页的一种语言&#xff0c;被称为超文本标记语言。用HTML5编写的文件&#xff0c;后…

伴游平台搭建重点,会用到哪些三方服务?

伴游平台搭建的重点在于确保用户的安全与体验&#xff0c;提供便捷的服务&#xff0c;同时维护平台的稳定运营。在搭建过程中&#xff0c;可能会用到以下三方服务&#xff1a; 身份验证与背景调查服务&#xff1a;由于伴游服务涉及到用户的个人安全和信任问题&#xff0c;因此需…

企业微信代开发应用登录操作

首先声明&#xff1a;企微的文档写得真烂&#xff01;&#xff01;&#xff01;有一些问题&#xff0c;官方情愿在问答区给用户一个个解答&#xff0c;也不愿意在文档写清楚&#xff0c;生怕自己工作量不饱和被优化。 概念说明 代开发应用&#xff0c;是相对于自建应用来说的。…

如何解决 IntelliJ IDEA 2024 启动总闪退问题?一站式解决方案!

&#x1f9e0; 如何解决 IntelliJ IDEA 2024 启动总闪退问题&#xff1f;一站式解决方案&#xff01; 文章目录 &#x1f9e0; 如何解决 IntelliJ IDEA 2024 启动总闪退问题&#xff1f;一站式解决方案&#xff01;摘要引言正文一级标题&#xff1a;检查和优化内存设置一级标题…

经验丰富也被裁了,失业快2年找不到工作?

前几天徐工说&#xff0c;他有个邻居&#xff0c;最近逮到他总是要跟他扯上几句。 原因是徐工一直是做嵌入式开发&#xff0c;而他一直做纯软件开发&#xff0c;具体不知道做后端还是前端。 他说&#xff0c;他至少有半年没上班了&#xff0c;之前在一家龙头物流公司上班。 碰上…

五年Python从业者,谈谈Python的一些优缺点

前言 Python它是作为年轻的血液&#xff0c;融入到编程语言这个大家庭里面&#xff0c;作为具有年轻人的蓬勃朝气的python&#xff0c;那它同时就会有年轻人的桀骜焦躁。 今天就来谈谈Python的一些优缺点。 先从优点说起&#xff0c;我是把它分为5部分。 1.简单————Pyth…

2024最新版JavaScript逆向爬虫教程-------基础篇之深入JavaScript运行原理以及内存管理

目录 一、JavaScript运行原理1.1 前端需要掌握的三大技术1.2 为什么要学习JavaScript1.3 浏览器的工作原理1.4 浏览器的内核1.5 浏览器渲染过程1.6 认识JavaScript引擎1.7 V8引擎以及JavaScript的执行过程1.8 V8引擎执行过程 二、JavaScript的执行过程2.1 初始化全局对象2.2 执…

【vue功能】多张图片合并

多张图片合并成一张图片 步骤一&#xff0c;多张图片上传步骤二&#xff0c;循环获取所有绘制图片的总高度new FileReader()方法作用new Image()方法作用介绍 步骤三&#xff0c;合并多张图片canvas.toDataURL()作用-dpr作用 步骤四&#xff0c;下载图片 步骤一&#xff0c;多张…

深入Linux下的GCC编译器:从入门到精通

目录标题 1、GCC编译器概述2、安装GCC3、GCC的基本使用4、高级功能4.1 多文件编译4.2 静态和动态链接4.3 什么是链接&#xff1f;4.4 静态链接优点缺点 4.5 动态链接优点缺点 4.6 实际应用4.7 编译优化 GCC&#xff08;GNU Compiler Collection&#xff09;是一款免费、开源的编…

从 Android 恢复已删除文件的 3 种简单方法

如何从 Android 恢复已删除的文件&#xff1f;毫不犹豫&#xff0c;有些人可能会认为从 Google 备份恢复 Android 文件太容易了。但是&#xff0c;如果删除的文件未同步到您的帐户或未备份怎么办&#xff1f;您错误的恢复可能会永久删除您想要的数据。因此&#xff0c;我们发布…

Maven 安装及配置教程(Windows)【安装】

文章目录 一、 下载1. 官网下载2. 其它渠道 二、 安装三、 配置四、 验证五、 本地仓储配置六、 配置镜像七、 配置JDK八、完整配置九、常用命令十、IDEA 中配置 Maven1. 配置当前项目2. 配置新建 / 新打开 项目 软件 / 环境安装及配置目录 一、 下载 1. 官网下载 安装地址&a…

【2024年最新】NodeMCU-ESP8266刷AT固件教程——适用于esp-12E和esp-12F

硬件图片 原理图 0、工具打包下载 工具包 密码:keduo 1、工具及固件下载 固件下载地址&#xff1a; 欢迎 | 安信可科技 (ai-thinker.com) 下载以下固件&#xff1a; 直接下载地址&#xff1a;AT 固件&#xff08;固件号&#xff1a;0781&#xff09; 下载以下工具&#xf…

【前端】vue数组去重的3种方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数组去重说明二、Vue数组去重的3种方法 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发工具&#xff0c;本文…

react09 hooks(useState)

react-09 hooks&#xff08;useState&#xff09; hooks组件&#xff08;函数组件动态化&#xff09; 其本质就是函数组件&#xff0c;引用一些hooks方法&#xff0c;用来在函数组件中进行例如状态管理&#xff0c;模拟类组件的生命周期等&#xff0c;只能运用到函数组件中 ho…

基于MaxKB搭建一个知识库问答系统

什么是MaxKB MaxKB 是一款基于 LLM 大语言模型的知识库问答系统。MaxKB Max Knowledge Base&#xff0c;旨在成为企业的最强大脑。 开箱即用&#xff1a;支持直接上传文档、自动爬取在线文档&#xff0c;支持文本自动拆分、向量化&#xff0c;智能问答交互体验好&#xff1b…