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. 最后

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

相关推荐
小大力28 分钟前
简单的kafka&redis学习之redis
redis·学习
C++忠实粉丝34 分钟前
Linux系统基础-多线程超详细讲解(5)_单例模式与线程池
linux·运维·服务器·c++·算法·单例模式·职场和发展
=(^.^)=哈哈哈1 小时前
Kubernetes(K8s)相关漏洞介绍
云原生·容器·kubernetes·云原生安全
Stringzhua1 小时前
Redis
redis
JingHongB1 小时前
Redis的常用数据类型以及命令
数据库·redis·缓存
鸠摩智首席音效师1 小时前
如何在一个 Docker 容器中运行多个进程 ?
java·docker·容器
华纳云IDC服务商1 小时前
CentOS系统中查看内网端口映射的多种方法
linux·运维·centos
中云DDoS CC防护蔡蔡2 小时前
棋牌游戏防ddos攻击,高防IP好用吗?
运维·服务器·游戏·网络安全·ddos
光芒再现dev2 小时前
CentOS—OpenEulerOS系统联网指南
linux·运维·centos
小笨猪-2 小时前
RabbitMQ高级特性
java·开发语言·redis·rabbitmq