虛擬機環境CentOS 7.7
前提:安裝好了Docker容器,已經拉取了Redis鏡像
1.創建Redis配置文件存目錄
[root@localhost ~]# mkdir -p /usr/local/docker/redis/conf
2.創建Redis持久化目錄
mkdir -p /usr/local/docker/redis/data
3.下載配置文件並且傳輸到/usr/local/docker/redis/conf下
redis.conf下載地址1:官網配置文件redis.conf
redis.conf下載地址2:Github的redis.conf
4.編輯配置文件(也可以先編輯好后傳輸到/usr/local/docker/redis/conf下)
#端口設置 port 6379 #遠程訪問(注釋掉bind 127.0.0.1;改protected-mode yes為protected-mode no) #bind 127.0.0.1 protected-mode no #守護進程方式(非后台模式,daemonize yes會使配置文件方式啟動redis失敗;如果不是no,docker會一直啟動失敗,原因是docker本身需要后台運行,而這個配置選項也是以守護進程啟動,兩者會沖突) daemonize no #redis持久化 appendonly yes
#指定本地數據庫存放目錄
dir ./
配置文件其他配置參考:redis.conf配置
后面啟動容器測試發現,下載的配置文件有一項配置repl-diskless-load disabled讀取會報錯,在472行附近,把repl-diskless-load disabled注釋掉(可能是新出的配置參數,具體看注釋說明):
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 472
>>> 'repl-diskless-load disabled'
Bad directive or wrong number of arguments
5.創建容器,配置文件映射
[root@localhost conf]# docker run -d -p 6379:6379 \
> -v /usr/local/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
> -v /usr/local/docker/redis/data:/data \
> --privileged=true \
> --name myredis redis:latest \
> redis-server /etc/redis/redis.conf \
> --appendonly yes
或者一行:
docker run -d -p 6379:6379 -v /usr/local/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data --privileged=true --name myredis redis:latest redis-server /etc/redis/redis.conf --appendonly yes
注釋:
#docker啟動命令
docker run
#后台啟動
-d
#宿主機容器端口映射
-p 6379:6379
#配置文件映射,容器啟動成功可以通過更改宿主機的配置文件來達到更改容器實際配置文件的目的
-v /usr/local/docker/redis/conf/redis.conf:/etc/redis/redis.conf
#掛載持久化文件
-v /usr/local/docker/redis/data:/data
/usr/local/my-redis/data是宿主機中持久化文件的位置
/data/是容器中持久化文件的位置(需要和配置文件中dir屬性值一樣),
#容器內部使用主機的所有Linux內核功能,docker容器防火牆完全開放
--privileged=true
#運行鏡像redis,並且啟動后容器名命名為myredis
--name myredis redis:latest
#配置文件方式啟動redis
redis-server /usr/local/etc/redis/redis.conf
#持久化
--appendonly yes
6.連接測試
7.進入Docker Redis容器
7.1 查容器ID
[root@localhost conf]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9cac1dfcba0b redis:latest "docker-entrypoint..." 13 minutes ago Up 13 minutes 0.0.0.0:6379->6379/tcp myredis
7.2 執行:docker exec -it 容器id /bin/bash
[root@localhost conf]# docker exec -it 9cac1dfcba0b /bin/bash root@9cac1dfcba0b:/data# ls appendonly.aof dump.rdb root@9cac1dfcba0b:/data# cd /etc/redis/ root@9cac1dfcba0b:/etc/redis# ls redis.conf root@9cac1dfcba0b:/etc/redis#
可以發現aof文件和啟動配置文件
7.3 退出 Ctrl + d
如果虛擬機掛起后,再次開啟無法訪問Redis,可以嘗試以下解決方法:
1.vi編輯/etc/sysctl.conf配置文件,在最后添加 net.ipv4.ip_forward = 1 2.CentOS7的話多一步,vi編輯/usr/lib/sysctl.d/50-default.conf增加 net.ipv4.ip_forward = 1 3.重啟網絡服務 systemctl restart network