Docker教程-4-Redis容器的安装配置使用
Posted 孔子-说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker教程-4-Redis容器的安装配置使用相关的知识,希望对你有一定的参考价值。
转自:Docker教程-4-Redis容器的安装配置使用,更优阅读:http://www.kongzid.com/
目录
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 下载
- 官网下载:https://github.com/caoxinyu/RedisClient
- 百度网盘:redisclient-win32.x86_64.2.0.jar 提取码:redi
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容器的安装配置使用的主要内容,如果未能解决你的问题,请参考以下文章