Docker部署Redis

1. 拉取Redis镜像

从docker hub上(阿里云加速器)拉取redis镜像

[root@bogon /]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a480a496ba95: Pull complete 
89511e3ccef2: Pull complete 
4ca428e0bb5e: Pull complete 
41cc262fb5bb: Pull complete 
228fc9e0b0ff: Pull complete 
23d1d45ab415: Pull complete 
4f4fb700ef54: Pull complete 
6adf9ee29d6f: Pull complete 
Digest: sha256:a06cea905344470eb49c972f3d030e22f28f632c1b4f43bbe4a26a4329dd6be5
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest

查看镜像是否已经下载

docker images

2. 创建Redis配置和数据目录

在宿主机创建两个文件夹,一个是存放配置文件,一个是保存redis数据,实现数据持久化

# 配置文件
mkdir -p /myredis/redis/conf

# 数据目录
mkdir -p /myredis/data

[root@bogon /]# cd /myredis
[root@bogon myredis]# ls
data  redis

创建配置文件redis.conf

vi /myredis/redis/conf/redis.conf

配置文件

# 开启密码验证(可选)
# requirepass xxx

# 允许redis外地连接,需要注释掉绑定的IP
# bind 127.0.0.1

# 关闭保护模式(可选)
protected-mode no

# 注释掉daemonize yes,或者配置成 daemonize no。因为该配置和 docker run中的 -d 参数冲突,会导致容器一直启动失败
daemonize no

# 开启redis数据持久化, (可选)
appendonly yes

3. 启动Redis容器

使用以下命令启动Redis容器,并将配置文件和数据目录挂载到容器中

docker run --name myredis --privileged=true \
-p 6379:6379 \
-v /myredis/data:/data \
-v /myredis/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

参数说明:

--name:设置容器名为redis。
-p 6379:6379:将容器的6379端口映射到宿主机的6379端口。
-v /myredis/data:/data:将宿主机的data目录挂载到容器的/data目录,用于数据持久化。
-v /myredis/redis/conf/redis.conf:/etc/redis/redis.conf:将宿主机的redis.conf配置文件挂载到容器的/etc/redis/redis.conf,使用自定义的配置文件启动Redis。
-d:以守护进程模式运行容器。
redis redis-server /etc/redis/redis.conf:指定容器启动后执行的命令,即用redis-server启动Redis服务,并使用/etc/redis/redis.conf配置文件。

privileged=true:

Docker挂载主机目录,访问如果出现报错:cannot open directory .: Permission denied,在挂载目录加一个 --privileged=true 参数即可解决

创建容器测试:

[root@bogon /]# docker run --name myredis --privileged=true \
> -p 6379:6379 \
> -v /myredis/data:/data \
> -v /myredis/redis/conf/redis.conf:/etc/redis/redis.conf \
> -d redis redis-server /etc/redis/redis.conf
f6b139b48bc5d1f6233ef0fd27f4daa0094849c53a7636aea3ca5aeeabe02403
[root@bogon /]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                                       NAMES
f6b139b48bc5   redis     "docker-entrypoint.s..."   5 seconds ago   Up 3 seconds   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   myredis
[root@bogon /]#

进行入容器,查看数据卷是否映射正确

宿主机配置文件内容:

容器内部配置文件内容

docker exec -it 运行着Rediis服务的容器ID /bin/bash

4. 测试Redis

进入容器,然后登陆客户端

docker exec -it 运行着Rediis服务的容器ID /bin/bash

登陆客服端,进行数据的设置与获取测试

root@f6b139b48bc5:/# redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set a name
OK
127.0.0.1:6379> get a
"name"
127.0.0.1:6379> 

进入容器,并进入redis的客户端

docker exec -it 运行着Rediis服务的容器ID redis-cli

[root@bogon /]# docker exec -it f6b139b48bc5 redis-cli
127.0.0.1:6379> get a
"name"
127.0.0.1:6379> 

5. 往期Docker链接

Docker基本操作命令-CSDN博客

Docker镜像命令汇总笔记-CSDN博客

Docker容器操作命令汇总笔记_容器里面能够运行哪些命令-CSDN博客

Docker本地镜像发布到阿里云镜像服务的简易指南_阿里云容器镜像服务-CSDN博客

Docker本地镜像发布到Docker Registry私有仓库_怎样将镜像推送到registry-CSDN博客

Docker容器数据卷_docker 容器数据卷-CSDN博客

Docker安装Mysql数据库_使用docker安装mysql-CSDN博客

Docker部署MySQL主从复制_docker mysql 主从复制-CSDN博客

Docker部署MySQL双主双从,主主互备-CSDN博客

6. 最后

感谢大家,请大家多多支持

相关推荐
morris13112 分钟前
【redis】布隆过滤器的Java实现
java·redis·布隆过滤器
椰椰椰耶16 分钟前
【redis】全局命令set、get、keys
数据库·redis·缓存
Hellc00720 分钟前
Docker 部署 MongoDB 并持久化数据
mongodb·docker·容器
月落星还在24 分钟前
Redis 内存淘汰策略深度解析
数据库·redis·缓存
五行星辰26 分钟前
Java链接redis
java·开发语言·redis
左灯右行的爱情28 分钟前
Redis- 切片集群
数据库·redis·缓存
周小闯1 小时前
Easyliev在线视频分享平台项目总结——SpringBoot、Mybatis、Redis、ElasticSearch、FFmpeg
spring boot·redis·mybatis
snpgroupcn1 小时前
ECC升级到S/4 HANA的功能差异 物料、采购、库存管理对比指南
运维·安全·数据库架构
晨曦启明7112 小时前
Linux云计算SRE-第十八周
linux·运维·云计算
云上艺旅2 小时前
K8S学习之基础十五:k8s中Deployment扩容缩容
学习·docker·云原生·kubernetes·k8s