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