1.搜索redis镜像
命令:docker search <镜像名称>
docker search redis
2.拉取镜像
命令::docker pull <镜像名称>:<版本号>
docker pull redis
3.创建配置文件
接下来就是要将redis 的配置文件进行挂载,以配置文件方式启动redis 容器。(挂载:即将宿主的文件和容器内部目录相关联,相互绑定,在宿主机内修改文件的话也随之修改容器内部文件)
1)、挂载 redis 的配置文件
2)、挂载 redis 的持久化文件(为了数据的持久化)。
-
创建目录
mkdir -p /usr/local/redis/conf /usr/local/redis/data
-
添加配置文件
vim /usr/local/redis/conf/redis.conf
以下是配置文件内容
# 将 192.168.1.100 绑定到 10.0.0.1 上(仅限 Linux 内核 3.9+) #bind 192.168.1.100 10.0.0.1 # 将 127.0.0.1 绑定到 IPv6 ::1 上(仅限 Linux 内核 3.9+) #bind 127.0.0.1 ::1 # 禁用保护模式,允许外部主机连接 protected-mode no # 指定 Redis 监听端口 port 6379 # 设置 TCP 连接队列的长度 tcp-backlog 511 # 设置 Redis 访问密码 requirepass 123456 # 设置客户端闲置连接超时时间(秒),0 表示无限制 timeout 0 # 设置 TCP 连接的 keepalive 时间(秒) tcp-keepalive 300 # 后台运行 Redis 服务器 (不关闭会造成docker-compose启动失败,无错误日志) daemonize no # 设置 Redis 运行的模式(no、upstart、systemd) supervised no # 设置 Redis 进程 ID 文件路径 pidfile /var/run/redis_6379.pid # 设置日志级别 loglevel notice # 设置日志文件路径(空字符串表示不写入日志文件) logfile "" # 设置数据库数量 databases 30 # 是否始终显示 Redis 的 ASCII 艺术 LOGO always-show-logo yes # 设置数据保存条件,格式为 save <seconds> <changes> save 900 1 save 300 10 save 60 10000 # 如果后台保存出错,是否停止写入操作 stop-writes-on-bgsave-error yes # 是否对 RDB 文件进行压缩 rdbcompression yes # 是否进行 RDB 文件校验 rdbchecksum yes # RDB 文件名 dbfilename dump.rdb # RDB 文件保存目录 dir ./ # 设置从服务器是否提供过期数据的读取 replica-serve-stale-data yes # 设置从服务器只读 replica-read-only yes # 是否使用无盘同步 repl-diskless-sync no # 是否禁用 TCP_NODELAY 算法,提高数据传输效率 repl-disable-tcp-nodelay no # 从服务器优先级 replica-priority 100 # 是否启用 lazyfree 机制进行数据清理 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no # 是否开启 AOF 持久化 appendonly yes # AOF 文件名 appendfilename "appendonly.aof" # 是否在 AOF 重写时禁用 fsync 操作 no-appendfsync-on-rewrite no # 触发 AOF 重写的百分比 auto-aof-rewrite-percentage 100 # 触发 AOF 重写的最小文件大小 auto-aof-rewrite-min-size 64mb # 是否允许载入有损坏的 AOF 文件 aof-load-truncated yes # 是否使用 RDB 文件的前置宣言 aof-use-rdb-preamble yes # 设置 Lua 脚本的最大执行时间(毫秒) lua-time-limit 5000 # 慢查询日志最大长度 slowlog-max-len 128 # key 过期事件的监听 notify-keyspace-events "Ex" # 设置哈希对象的最大 ziplist 条目数和最大 ziplist value 长度 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 # 设置列表对象的最大 ziplist size 和 compress depth list-max-ziplist-size -2 list-compress-depth 0 # 设置集合对象的最大 intset 条目数 set-max-intset-entries 512 # 设置有序集合对象的最大 ziplist 条目数和最大 ziplist value 长度 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 # 设置 HyperLogLog 对象的最大 sparse 编码长度 hll-sparse-max-bytes 3000 # 设置 stream 对象的最大 node 长度和最大 entry 数量 stream-node-max-bytes 4096 stream-node-max-entries 100 # 是否开启动态 HZ,根据负载动态调整 serverCron() 函数的执行频率 activerehashing yes # 设置 serverCron() 函数的执行频率,值越高执行频率越高 hz 10 # 是否开启动态 HZ,动态调整 serverCron() 函数的执行频率 dynamic-hz yes # 是否在 AOF 重写时使用增量 fsync aof-rewrite-incremental-fsync yes # 是否在 RDB 持久化时使用增量 fsync rdb-save-incremental-fsync yes
4.启动redis容器
docker run \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=2 \
-p 6379:6379 \
--name redis \
-v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /usr/local/redis/data:/data \
-d \
redis
命令 | 说明 |
---|---|
–restart=always | 总是开机启动 |
–log | 日志方面的 |
-p 6379:6379 | 将6379端口挂载出去 |
–name | 给这个容器取一个名字 |
-v | 数据卷挂载 |
- /home/redis/myredis/myredis.conf:/etc/redis/redis.conf | 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。 |
- /home/redis/myredis/data:/data | 这个同上 |
-d redis | 表示后台启动redis |
redis-server /etc/redis/redis.conf | 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf |
–appendonly yes | 开启redis 持久化 |
–requirepass 000415 | 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置) |
5.操作容器
1查看启动状态
docker ps -a
2查看日志
docker logs redis
3进入容器
docker exec -it redis /bin/sh
4访问客户端
docker exec -it redis redis-cli
5验证密码
auth 123456
6查看密码
config get requirepass