Docker教程-4-Redis容器的安装配置使用

Posted 孔子-说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker教程-4-Redis容器的安装配置使用相关的知识,希望对你有一定的参考价值。

目录

1、环境检查

2、查看可用的 Redis 版本

3、下载所需版本的Redis镜像

4、挂载目录/数据卷方式创建数据目录和Redis配置文件

4.1 挂载目录方式:创建数据目录和配置文件

4.2 数据卷方式:创建数据目录和配置文件的数据卷

4.3 配置文件说明

5、创建 Redis 单机版容器

5.1 挂载本地目录方式创建 redis 单机版容器

5.2 挂载数据卷方式创建 redis 单机版容器

6、Redis 单机版容器测试

6.1 进入redis容器及redis控制台

6.2 容器内命令行测试

6.3 查看指定容器的log

6.4 redisclient工具测试

7、基本docker命令列表


1、环境检查

首先检查服务器是否安装了Docker服务,通过docker -v 或 docker info 命令查看docker版本等相关信息,若不识别docker命令表示未安装Docker服务。

2、查看可用的 Redis 版本

访问 Redis 镜像库地址:https://hub.docker.com/_/redis?tab=tags 。可以通过 Sort by 查看其他版本的 Redis,默认是最新版本 redis:latest 。通过Filter Tags搜索特定版本。

还可通过docker search redis 查找Docker Hub或其他Docker仓库中的redis可用版本镜像。

3、下载所需版本的Redis镜像

1)下载 redis 6.2.6 版本镜像

# 下载redis 6.2.6版本镜像
docker pull redis:6.2.6
 
# 不带版本号默认下载最新版本
docker pull redis

2)查看是否已下载 redis 6.2.6 版本镜像文件

docker images 查看系统中的镜像文件是否包含刚下载的redis镜像,可以看到redis 6.2.6版本已经下载到本地。

4、挂载目录/数据卷方式创建数据目录和Redis配置文件

启动Redis容器和其他容器有点区别 , Redis启动时是没有默认配置文件的,是因为Redis本身容器只存在 /etc/redis 目录 , 本身就不创建 redis.conf 文件,当服务器和容器都不存在 redis.conf 文件时, 执行启动命令的时候 docker 会将 redis.conf 作为目录创建 , 这并不是我们想要的结果,我们需要在启动时设置一条额外的启动命令,让Redis加载指定的配置文件启动,所以我们要提前在宿主机创建好这个配置文件并映射到容器中。

4.1 挂载目录方式:创建数据目录和配置文件

1)创建数据目录及配置文件目录

在 /usr/local/docker 目录下创建 redis/redis6-1 目录,命令:mkdir -p redis/redis6-1,redis6-1表示该目录存储redis6版本的一份配置,若搭建多个redis服务,可以增加redis6-2的配置。

在 /usr/local/docker/redis/redis6-1/目录下创建data目录和conf目录,其中data目录用于存储redis的数据,conf目录用于存储配置文件,使用命令:mkdir data 和 mkdir conf 创建目录。

2)创建配置文件 redis.conf(也可以从已有的redis安装目录上拷贝一份)

在 /usr/local/docker/redis/redis6-1/conf 目录下创建配置文件redis.conf,也可以从已有的redis安装目录上拷贝一份。

# 创建配置文件
touch redis.conf

# 编辑配置文件并填入以下内容保存
vim redis.conf

配置文件内容

# 端口
port 6379
# RDB相关配置
save 900 1
save 300 10
save 60 10000
rdbcompression yes
# 数据目录
dir /data
# AOF相关配置
appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 密码
requirepass 111111

4.2 数据卷方式:创建数据目录和配置文件的数据卷

1)创建数据目录及redis配置文件对应的数据卷

在宿主机创建数据目录对应的数据卷redis6-data,创建redis配置文件对应的数据卷redis6-conf。

#在宿主机创建数据目录对应的数据卷redis6-data
docker volume create redis6-data

# 创建redis配置文件对应的数据卷redis6-conf
docker volume create redis6-conf

# 查看所有数据卷列表
docker volume ls

2)在数据卷目录下创建配置文件 redis.conf

在数据卷的实际存储目录 /var/lib/docker/volumes/redis6-conf/_data/ 下创建1个空的redis配置文件redis.conf。

  • 可使用命令 docker volume inspect redis6-data 查看 redis6-data 数据卷的信息(包含实际存储目录)
# 在数据卷目录下创建redis配置文件
touch /var/lib/docker/volumes/redis6-conf/_data/redis.conf

# 查看数据卷目录下是否有redis配置文件
ls /var/lib/docker/volumes/redis6-conf/_data/

3)编辑配置文件 redis.conf 并保存

# 编辑数据卷目录下的redis配置文件并保存
vim /var/lib/docker/volumes/redis6-conf/_data/redis.conf

配置文件内容

# 端口
port 6379
# RDB相关配置
save 900 1
save 300 10
save 60 10000
rdbcompression yes
# 数据目录
dir /data
# AOF相关配置
appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 密码
requirepass 111111

4.3 配置文件说明

appendonly yes         启动Redis持久化功能 (默认 no , 所有信息都存储在内存 [重启丢失] 。 设置为 yes , 将存储在硬盘 [重启还在])
protected-mode no    关闭protected-mode模式,此时外部网络可以直接访问 (docker貌似自动开启了)
bind 0.0.0.0               设置所有IP都可以访问 (docker貌似自动开启了)
requirepass 密码       设置密码

5、创建 Redis 单机版容器

5.1 挂载本地目录方式创建 redis 单机版容器

1)创建容器

使用4.1挂载目录方式创建的数据目录和配置文件路径挂载容器的对应配置。

docker run -it -p 6379:6379  \\
--name redis6-1 \\
--privileged=true \\
--restart=always \\
-v /usr/local/docker/redis/redis6-1/conf/redis.conf:/etc/redis/redis.conf \\
-v /usr/local/docker/redis/redis6-1/data:/data \\
-v /etc/localtime:/etc/localtime \\
-e TZ="Asia/Shanghai" \\
-d redis:6.2.6 redis-server /etc/redis/redis.conf
  • --name  指定容器的名称为redis6-1
  • --privileged=true  挂载文件权限设置,使容器内root拥有真正的root权限
  • --restart=always 设置随服务启动而启动容器
  • -p  将容器内的6379端口与本地6379接口映射,前者是本地访问端口,后者是容器内部端口
  • -v 挂载宿主目录到容器目录,格式为:主机(宿主)目录:容器目录
  • -v /usr/local/docker/redis/redis6-1/conf/redis.conf:/etc/redis/redis.conf \\  挂载redis配置文件
  • -v /usr/local/docker/redis/redis6-1/data:/data  \\   挂载数据目录
  • -v /etc/localtime:/etc/localtime    容器时间与宿主机同步
  • -e  添加了一个环境变量TZ,指定容器时区,不指定的话mysql的时间函数执行结果会不正确
  • -d  后台运行容器,并返回容器ID
  • redis:6.2.6,运行指定的镜像创建容器
  • redis-server /etc/redis/redis.conf  表示以配置文件的方式启动,若不加这一句密码无效
  • 对于已经运行但没设置随docker服务的启动而启动容器的可以执行命令 docker update –restart=always 容器名

如果创建容器启动的时候不以配置文件的方式启动的话,那么配置文件里面的密码是不生效的,也就是没有密码,这时可以加上参数 --requirepass 你的密码,但是这个密码好像是没法更改的,只是用这一个容器,下次创建redis容器时还要设置密码。当我们没有配置文件 也不挂载数据和配置文件的时候也可以直接在创建启动redis容器的时候加上 --requirepass 你的密码,也是有密码生效的,仅限该容器。

docker run --name redis01 -p 6379:6379 -v /usr/local/docker/data1:/data 
		-v /usr/local/docker/redis1.conf:/etc/redis/redis.conf 
		-d redis:6.2.6 --requirepass 123456

--restart=always参数能够使我们在重启docker时,自动启动相关容器。Docker容器的重启策略如下:

  • no,默认策略,在容器退出时不重启容器
  • on-failure,在容器非正常退出时(退出状态非0),才会重启容器
  • on-failure:3,在容器非正常退出时重启容器,最多重启3次
  • always,在容器退出时总是重启容器
  • unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

2)查看容器是否创建成功

通过docker ps 或 docker ps -al 命令可以查看到redis6-1容器已启动成功。

3)创建第二个容器

docker run -it -p 6380:6379  \\
--name redis6-2 \\
--privileged=true \\
--restart=always \\
-v /usr/local/docker/redis/redis6-2/conf/redis.conf:/etc/redis/redis.conf \\
-v /usr/local/docker/redis/redis6-2/data:/data \\
-v /etc/localtime:/etc/localtime \\
-e TZ="Asia/Shanghai" \\
-d redis:6.2.6 redis-server /etc/redis/redis.conf

与第一个容器不同的地方有3点:

  • 1是映射到本地宿主机的访问端口(6380)不同。
  • 2是容器名称不同(redis6-2)。
  • 3是挂载的本地宿主机的数据目录及配置目录不同。

4)重启redis容器

docker restart redis6-1

5.2 挂载数据卷方式创建 redis 单机版容器

使用4.2挂载数据卷方式创建的数据目录和配置文件的数据卷。

1)查看数据卷信息

# 查看所有数据卷
docker volume ls
 
# 查看指定 数据卷 的信息
docker volume inspect redis6-data
 
# 删除数据卷
docker volume rm 卷名1 卷名2 … 删除一个或者多个数据卷
docker volume prune 删除所有未被使用的数据卷

# 如果不再使用自定义数据卷了,那么可以手动清理掉:
docker stop 容器名或容器id// 暂停容器实例
docker rm 容器名或容器id // 移除容器实例
docker volume rm 卷名1 卷名2 … // 删除自定义数据卷

2)数据卷的挂载

我们在创建容器的时候要想好容器的哪些目录需要挂载数据卷!在创建容器时使用 --volume/-v或--mount 选项就可以挂载数据卷了。

方式一:使用-v创建自volume名称的容器: 若volume没有则自动创建

docker run -it -p 6380:6379  \\
--name redis6-2 \\
--privileged=true \\
--restart=always \\
-v redis6-conf:/etc/redis/redis.conf \\
-v redis6-data:/data \\
-v /etc/localtime:/etc/localtime \\
-e TZ="Asia/Shanghai" \\
-d redis:6.2.6 redis-server /etc/redis/redis.conf

查看容器是否创建成功

通过docker ps 或 docker ps -al 命令可以查看到redis6-2容器已创建并启动成功。

方式二:使用--mount创建自volume名称的容器: :若volume没有创建失败

参数--mount默认情况下用来挂载volume,但也可以用来创建bind mount和tmpfs。如果不指定type选项,则默认为挂载volume,volume是一种更为灵活的数据管理方式,volume可以通过docker volume命令集被管理。

docker run -it -p 6380:6379  \\
--name redis6-2 \\
--privileged=true \\
--restart=always \\
--mount source=redis6-conf, destination=/etc/redis/redis.conf,readonly \\
--mount source=redis6-data, destination=/data \\
-v /etc/localtime:/etc/localtime \\
-e TZ="Asia/Shanghai" \\
-d redis:6.2.6 redis-server /etc/redis/redis.conf
  • 挂载volume命令格式:[type=volume,]source=my-volume,destination=/path/in/container[,...]
  • 创建bind mount命令格式:type=bind,source=/path/on/host,destination=/path/in/container[,...]
  • 如果创建bind mount并指定source,则必须是绝对路径,且路径必须已经存在
  • 示例中readonly表示只读

6、Redis 单机版容器测试

6.1 进入redis容器及redis控制台

### 通过 Docker 命令进入 Redis 容器内部
# redis6-1 是容器名称,也可以用容器id指定
docker exec -it redis6-1 /bin/bash
docker exec -it redis6-1 bash

### 进入 Redis 控制台
redis-cli

### 通过密码进入Redis控制台
redis-cli -h 127.0.0.1 -p 6379 -a 123456

### 或者也可以直接通过Docker Redis 命令进入Redis控制台 (上面两个命令的结合)
docker exec -it redis6-1 redis-cli

6.2 容器内命令行测试

### 添加一个变量为 key 为 name , value 为 bella 的内容
> set name bella
### 查看 key 为 name 的 value 值
> get name

6.3 查看指定容器的log

# 查看指定容器的日志:docker logs -f 容器id或容器名称
docker logs redis6-1
docker logs -f redis6-1

6.4 redisclient工具测试

管理redis的可视化客户端目前较流行的有三个:Redis Client ; Redis Desktop Manager ; Redis Studio.

Redis可视化工具 Redis Client 下载

Redis可视化工具 Redis Desktop Manager 下载

  • 官网下载:https://redisdesktop.com/download
  • github地址:https://github.com/uglide/RedisDesktopManager/releases
  • 百度网盘:redis-desktop-manager-0.8.8.384.exe 提取码:redm

Redis可视化工具 Redis Studio 下载

  • github地址:https://github.com/cinience/RedisStudio/releases
  • 百度网盘:RedisStudio-en-0.1.5.exe 提取码:rest

7、基本docker命令列表

docker build -t friendlyname .# 使用此目录的 Dockerfile 创建镜像
docker run -p 4000:80 friendlyname  # 运行端口 4000 到 90 的“友好名称”映射
docker run -d -p 4000:80 friendlyname         # 内容相同,但在分离模式下
docker ps                                 # 查看所有正在运行的容器的列表
docker stop <hash>                     # 平稳地停止指定的容器
docker ps -a           # 查看所有容器的列表,甚至包含未运行的容器
docker kill <hash>                   # 强制关闭指定的容器
docker rm <hash>              # 从此机器中删除指定的容器
docker rm $(docker ps -a -q)           # 从此机器中删除所有容器
docker images -a                               # 显示此机器上的所有镜像
docker rmi <imagename>            # 从此机器中删除指定的镜像
docker rmi $(docker images -q)             # 从此机器中删除所有镜像
docker login             # 使用您的 Docker 凭证登录此 CLI 会话
docker tag <image> username/repository:tag  # 标记 <image> 以上传到镜像库
docker push username/repository:tag            # 将已标记的镜像上传到镜像库
docker run username/repository:tag                   # 运行镜像库中的镜像

以上是关于Docker教程-4-Redis容器的安装配置使用的主要内容,如果未能解决你的问题,请参考以下文章

Docker教程-4-Redis容器的安装配置使用

DockerRedis 安装使用教程

Docker教程-3-Tomcat容器的安装配置使用

Docker教程-3-Tomcat容器的安装配置使用

Docker教程-2-MySql容器的安装配置使用

Docker教程-3-Tomcat容器的安装配置使用