docker第三讲 docker启动redis容器以及解决redis-server启动redis直接挂的问题

本地启动配置redis

  • 安装包安装
安装gcc
yum install gcc
把下载好的redis-6.2.1r/1.tar.gz放在/usr/local文件夹下,并解压
wget https://download.redis.io/releases/redis-6.2.11.tar.gz
tar xzf redis-6.2.11.tar.gz
  • 编译与安装
make && make install

  • 命令
src/redis-server redis.conf		     #启动服务
src/redis-cli shutdown  			 #关闭服务
src/redis-cli -a root  shutdown 	 #password 需要验证

docker启动redis

docker拉取redis镜像

docker search redis 搜索
docker pull redis  拉取最新redis
docker pull redis:6.  拉取指定版本

配置redis运行:

docker run -itd --name redis -p 6379:6379 redis
c1a0da71c41a67bf43539b3c0c46afe5d92291fb6e0115b773ab10f30d48b2bd
进入Redis容器使用redis-cli命令进行连接:
docker exec -it redis redis-cli

进入redis内部,以客户端启动 

docker exec -it redis /bin/bash
root@c1a0da71c41a:/data# redis-cli
127.0.0.1:6379> set test 1
OK
127.0.0.1:6379> get test
"1"
127.0.0.1:6379> exit

redis.conf 从官网下载: http://download.redis.io/redis-stable/redis.conf

指定redis.conf 启动

docker run -p 6379:6379 --privileged=true  --name redis \
-v /mydata/redis/data:/data \
-d redis:5 redis-server --appendonly yes
docker run -p 6379:6379 --name redis \
-v /usr/local/redis/redis.conf:/etc/redis/redis.conf \
-v /usr/local/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf --appendonly yes

命令解释:

-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
--name redis 指定该容器名称,查看和进行操作都比较方便。
-v 挂载目录,规则与端口映射相同。
为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf  以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/redis/redis.conf

客户端启动:

docker exec -it redis redis-cli

docker-compose启动redis
 

version: '3'
services:
  redis:
    image: redis:6.2.1
    container_name: redis
    ports:
      - 6379:6379
    volumes:
      - ./redis/data:/data:rw
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
    networks:
      - dev

networks:
   dev:
     external: true

启动:

docker-compose -f docker-compose-redis.yml up -d

如果需要设置密码password:可以通过修改配置文件,或者增加命令的形式

    command: redis-server --requirepass redis

 修改配置文件redis.conf:

requirepass redis

但是遇到问题时,我在docker或者docker-compose指定使用redis-server redis.conf的时候,容器就起不来。

version: '3'
services:
  redis:
    image: redis:6.2.1
    container_name: redis
    command: redis-server /etc/redis.conf
    ports:
      - 6379:6379
    volumes:
      - ./redis/data:/data:rw
      - ./redis/redis.conf:/etc/redis.conf:rw
    networks:
      - dev

networks:
   dev:
     external: true

这里面需要考虑的一点就是redis.conf配置文件使用的后台启动,和docker的后台启动是互斥的,需要修改我们的配置文件:修改为前台启动

daemonize no

如果修改为前台启动后,还是不可以正常启动redis,就比如我遇到的问题:


Starting redis ... done
Attaching to redis
redis exited with code 1

可能就要考虑下你的redis.conf配置文件与你的redis镜像版本匹配问题,redis的镜像容器里是没有redsi.conf配置文件的,需要我们自己映射到容器,关于redis.conf配置文件可以在这里下载:https://redis.io/docs/management/config/

最后我本地使用的是reids-6.2.1的镜像,然后下载使用redis6.2的conf文件配置再次配置就成功起来了

protected-mode no
daemonize no
requirepass redis

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员路同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值