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本地镜像发布到Docker Registry私有仓库_怎样将镜像推送到registry-CSDN博客
Docker容器数据卷_docker 容器数据卷-CSDN博客
Docker安装Mysql数据库_使用docker安装mysql-CSDN博客
Docker部署MySQL主从复制_docker mysql 主从复制-CSDN博客
6. 最后
感谢大家,请大家多多支持