代码改变世界

docker安装redis

2020-05-30 18:09  youxin  阅读(1125)  评论(0编辑  收藏  举报

1.获取镜像

-- :4 指定redis Tag Name --
➜  docker pull redis:4

2.构建运行目录

➜  redis ll
drwxr-xr-x  3 pb  staff   102B  9 17 10:06 conf
drwxr-xr-x@ 4 pb  staff   136B  9 17 10:38 data
-rw-r--r--  1 pb  staff   160B  9 17 11:08 start.sh
  • conf redis配置目录,里面有一个redis.conf(官网cp)
  • data redis数据持久化目录
  • start.sh 启动脚本(如下)
# start.sh
#!/usr/bin/env bash
docker run --rm  -p 6379:6379 --name myredis -v $PWD/conf:/conf -v $PWD/data:/data  -d  redis redis-server /conf/redis.conf --appendonly yes 
  • 参数:
  • --rm 在容器终止运行后自动删除容器文件
  • -d 后台运行
  • -p 6379:6379 端口映射(本机6379端口映射容器6379端口)
  • --name myredis 容器别名
  • -v /etc/app/redis/conf:/conf 目录映射(本机redis配置文件目录)
  • -v /etc/app/redis/data:/data 目录映射(本机redis数据目录)
  • redis-server /conf/redis.conf --appendonly yes 在容器运行命令,并打开数据持久化

 

 redis-cli 连接测试使用 redis 服务

    执行命令:docker exec -it myredis /bin/bash   进入docker终端,在终端中输入:redis-cli

 

或者直接进入docker的redis-lci

    docker exec -it myredis redis-cli -h localhost -p 6379

 

 

 

下载配置文件:

创建配置文件目录存放redis.conf,文件从官网下载

 

查看日志:

dockers logs myredis/27ddba64faa6  (容器名称/id)

 

docker基本命令:

查看所有镜像 docker images

删除镜像(会提示先停止使用中的容器) docker rmi  镜像name/镜像id

查看所有容器 docker ps -a

查看容器运行日志 docker logs 容器名称/容器id

停止容器运行 docker stop 容器name/容器id

终止容器后运行 docker start 容器name/容器id

容器重启 docker restart 容器name/容器id

删除容器 docker rm 容器name/容器id
————————————————

安装过程中,如果发现容器启动失败,使用docker logs查看容器日志.

参考:

https://www.runoob.com/docker/docker-install-redis.html

https://www.jianshu.com/p/b3b5f747c6ba

redis配置文件修改(重要)

/root/redis/redis01/conf/redis.conf 中daemonize=NO。非后台模式,如果为YES 会的导致 redis 无法启动,因为后台会导致docker无任务可做而退出。

 

我们在docker 外面 用redis-cli测试会发现:

[root@iZdfx6empaentgZ ~]# redis-cli
127.0.0.1:6379> auth xx
Error: Connection reset by peer

原因:

有时我们用Docker启动了一个http服务,从外部使用curl访问却返回Connection reset by peer错误。
这种错误一般是因为服务容器内部并没有监听指定的端口,而docker run时却指定了该端口。

进一步的,这种错误往往由于容器内部的服务监听在localhost:port上,只允许本机访问,这样的话容器的端口映射将失败。应该检查容器内部服务监听在0.0.0.0上。

 把redis的bind不要绑定127.0.0.1
 
redis管理脚本:
########################### 
PATH=/usr/local/bin:/sbin:/usr/bin:/bin 
   
REDISPORT=6379 
EXEC=/opt/redis/bin/redis-server 
REDIS_CLI=/opt/redis/bin/redis-cli 
   
PIDFILE="/var/run/redis_6379.pid"
CONF="/opt/redis/redis.conf" 
   
case "$1" in 
  start) 
    if [ -f $PIDFILE ] 
    then 
        echo "$PIDFILE exists, process is already running or crashed" 
    else 
        echo "Starting Redis server..." 
        $EXEC $CONF 
    fi 
    if [ "$?"="0" ]  
    then 
       echo "Redis is running..." 
    fi 
    ;; 
  stop) 
    if [ ! -f $PIDFILE ] 
    then 
        echo "$PIDFILE does not exist, process is not running" 
    else 
        PID=$(cat $PIDFILE) 
        echo "Stopping ..." 
        $REDIS_CLI -p $REDISPORT SHUTDOWN 
        while [ -x ${PIDFILE} ] 
        do 
          echo "Waiting for Redis to shutdown ..." 
          sleep 1 
        done 
        echo "Redis stopped" 
    fi 
    ;; 
  restart|force-reload) 
    ${0} stop 
    ${0} start 
    ;; 
 *) 
  echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2 
    exit 1 
esac 
############################## 

 

docker-compose安装

  redis:
    image: redis:7.2.4-alpine3.19
    hostname: redis
    container_name: 'redis'
    environment:
      - TZ=Asia/Shanghai # 设置时区
    ports:
      - "6379:6379"
    volumes:
      - ./data:/data 
      - ./logs:/logs
      - ./conf/redis.conf:/usr/local/etc/redis/redis.conf 
    command: redis-server /usr/local/etc/redis/redis.conf 

./

/conf/redis.conf这个文件,去github看redis仓库地址,下载对应的redis.conf即可。