前提:拉取一个redis镜像,要知道版本号,我用的是5.0.4。这个很关键,涉及到之后使用的redis.conf,要使用相同版本的。redis.conf下载地址:http://download.redis.io/releases/
先拿到redis.conf 对应版本的文件(在官网地址直接下载解压即可)

主节点docker-compose文件

  1. version: "3"
  2. services:
  3. redis:
  4. container_name: my-redis-container
  5. image: redis:latest #image 代表镜像名称;(用最新的版本)
  6. environment:
  7. - TZ=Asia/Shanghai
  8. ports: #ports 将容器内的端口映射到容器外;
  9. - 6379:6379
  10. volumes:
  11. #数据挂载 :冒号前面是宿主机的路径:冒号后面数容器的路径 这句话的意思就是把容器里面的redis.conf
  12. #的文件映射到宿主机./volume/conf/redis.conf 这个redis.conf 文件下面
  13. - /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
  14. - "./volume/conf/redis.conf:/usr/local/etc/redis/redis.conf"
  15. - "./volume/data:/data"
  16. command: redis-server --port 6379 --requirepass 你的密码 --appendonly yes # 这样配置密码生效了
  17. restart: always

说明:

  1. volumes 代表共享目录或文件,冒号前为宿主机目录,冒号后为容器内目录。举例:- ./data:/data 意为将当前目录共享到容器内的 /data 目录,相当于做了一个软连接。

注:共享目录或文件时如果宿主机或容器内不存在 docker 会自动帮你创建。

在执行docker-compose up 这个命令之前 我们最好先对挂载的路径做个准备工作 先在volume的目录下先新建redis.conf 文件 所以在执行docker-compose up 执行在yaml 文件时会把redis.conf创建成一个文件夹
image.png

对redis.conf文件进行修改(或者直接编写redis.conf文件)

image.png

redis.conf文件直接手写

  1. bind 0.0.0.0
  2. protected-mode no
  3. port 6379
  4. timeout 0
  5. save 900 1
  6. save 300 10
  7. save 60 10000
  8. rdbcompression yes
  9. dbfilename dump.rdb
  10. dir /data
  11. appendonly yes
  12. appendfsync everysec
  13. requirepass 你的密码
  1. 我就修改了四处
  2. requirepass 123456 登入密码 (第一处)
  3. daemonize yes # 以守护进程方式启动,使用本启动方式,redis将以服务的形式存在(第二处)
  4. daemonize no ## 若使用开机启动,生成pid,该项必须设置为诶yes,否则redis将不能够正常执行开机启动(systemctl start redis,执行后一直卡着,直到超时)
  5. #bind 127.0.0.1 ##注释掉或者0.0.0.0,允许所有其他ip访问,真实使用最好坐下限制,只允许某些主机访问 (第三处)
  6. appendonly yes#redis持久化  默认是no (第四处)

创建并启动容器

直接用docker-compose up
up选项启动容器,-d选项以守护模式运行,镜像如果没有,docker会先拉取镜像,有则直接创建并启动容器,注意文件运行前不能有与其同名容器,还应该注意防火墙设置

END

使用docker ps 命令查看是否运行成功
image.png