docker安裝redis


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 
############################## 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM