如題,場景重現:因為配置多了,不想通過參數來啟動docker容器中的redis,特意上github找了對應版本的redis.conf,修改了相關配置,只讓本機使用:
上傳到/mydata/redis/data目錄后,因為我是在普通用戶下,所以需要將redis.conf文件修改下屬主和組:
[mall@VM_0_7_centos data]$ ll total 48 -rw-r--r-- 1 polkitd input 0 Nov 6 03:02 appendonly.aof -rw-r--r-- 1 root root 47759 Nov 6 10:49 redis.conf [mall@VM_0_7_centos data]$ sudo chown polkitd.input redis.conf [mall@VM_0_7_centos data]$ ll total 48 -rw-r--r-- 1 polkitd input 0 Nov 6 03:02 appendonly.aof -rw-r--r-- 1 polkitd input 47759 Nov 6 10:49 redis.conf
接着停掉原來的redis、刪除原有docker容器中的redis鏡像,再重新以配置文件方式啟動:
[mall@VM_0_7_centos data]$ sudo docker stop redis redis [mall@VM_0_7_centos data]$ sudo docker rm redis redis [mall@VM_0_7_centos data]$ sudo docker run -p 6379:6379 --name redis -v /mydata/redis/data/redis.conf:/etc/redis/redis.conf -v /mydata/redis/data:/data -d redis:3.2 redis-server /etc/redis/redis.conf a02b1a8d290e276d401a612f9a8239a01aab3b2feb952dfed50b33da2d3f5a54
然而,沒有反應,進程並未成功起來:
也沒有報錯日志:
解決方案:在redis.conf中注掉daemonize yes這一行,或者改為daemonize no。因為我們的docker run里參數-d就是以守護進程方式啟動redis,而配置文件里daemonize yes這個東東再次以守護進程方式啟動,而且它會讀取pidfile這個配置的文件作為進程ID文件。說白了,就是docker啟動參數跟redis.conf配置沖突了。
改redis.conf:
再啟docker,ok了:
現在沒法從外網連接進來了: