做美食網(wǎng)站的需求寧波seo快速優(yōu)化
解決:docker創(chuàng)建Redis容器成功,但無法啟動Redis容器、也無報錯提示
- 一·問題描述:
- 1.docker若是直接簡單使用run命令,但不掛載容器數(shù)據(jù)卷等參數(shù),則可以啟動Redis容器
- 2.docker復(fù)雜使用run命令,使用指定redis.conf文件后臺啟動Redis服務(wù)、且掛載容器數(shù)據(jù)卷時,容器創(chuàng)建成功,但是永遠(yuǎn)無法啟動Redis容器
- 二·問題原因:
- 1.docker容器里面,如果進(jìn)程都是守護(hù)進(jìn)程,則容器會自動關(guān)閉,并且沒有報錯
- 2.Redis容器使用的redis.conf配置文件中`daemonize`是`yes`,表示Redis服務(wù)進(jìn)程成為守護(hù)進(jìn)程
- 3.使用的docker run命令中帶有-d參數(shù),表示直接后臺啟動Redis服務(wù)
- 4.宿主機(jī)跟Redis容器數(shù)據(jù)卷掛載映射的目錄,都需要擁有可讀可寫操作權(quán)限
- 5. 綜上所述:因此Redis容器里面啟動時,容器中全是守護(hù)進(jìn)程,所以容器會瞬間關(guān)閉,永遠(yuǎn)啟動不起來
- 三·解決方案:
- 前提:先對宿主機(jī)的掛載映射目錄,進(jìn)行授權(quán)操作,兩個方案都需要使用
- 解決方案一(推薦使用):該方案下Redis容器實例重啟時,Redis服務(wù)也會自動啟動。使用-d參數(shù)后臺啟動Redis服務(wù),需要修改redis.conf配置文件
- 解決方案二(了解拓展):該方案下Redis容器實例重啟時,Redis服務(wù)不會自動啟動,還是需要進(jìn)去手動啟動Redis服務(wù)。使用前端交互式命令,進(jìn)行手動啟動Redis服務(wù)
一·問題描述:
1.docker若是直接簡單使用run命令,但不掛載容器數(shù)據(jù)卷等參數(shù),則可以啟動Redis容器
2.docker復(fù)雜使用run命令,使用指定redis.conf文件后臺啟動Redis服務(wù)、且掛載容器數(shù)據(jù)卷時,容器創(chuàng)建成功,但是永遠(yuǎn)無法啟動Redis容器
二·問題原因:
1.docker容器里面,如果進(jìn)程都是守護(hù)進(jìn)程,則容器會自動關(guān)閉,并且沒有報錯
2.Redis容器使用的redis.conf配置文件中daemonize
是yes
,表示Redis服務(wù)進(jìn)程成為守護(hù)進(jìn)程
3.使用的docker run命令中帶有-d參數(shù),表示直接后臺啟動Redis服務(wù)
4.宿主機(jī)跟Redis容器數(shù)據(jù)卷掛載映射的目錄,都需要擁有可讀可寫操作權(quán)限
5. 綜上所述:因此Redis容器里面啟動時,容器中全是守護(hù)進(jìn)程,所以容器會瞬間關(guān)閉,永遠(yuǎn)啟動不起來
三·解決方案:
前提:先對宿主機(jī)的掛載映射目錄,進(jìn)行授權(quán)操作,兩個方案都需要使用
chmod 777 /宿主機(jī)目錄
解決方案一(推薦使用):該方案下Redis容器實例重啟時,Redis服務(wù)也會自動啟動。使用-d參數(shù)后臺啟動Redis服務(wù),需要修改redis.conf配置文件
- 1.修改redis.conf配置文件參數(shù)
daemonize
為no
:
由于創(chuàng)建容器實例時,會進(jìn)行容器數(shù)據(jù)卷掛載,因此可以直接在外部宿主機(jī)里面修改,docker會自動同步該文件到redis容器對應(yīng)目錄里面
#表示創(chuàng)建Redis服務(wù)的進(jìn)程,是否為守護(hù)進(jìn)程
daemonize no
- 2.刪除之前創(chuàng)建的redis容器實例
docker rm -f 容器id
- 3.復(fù)雜使用run命令,再次重新創(chuàng)建redis容器實例。會進(jìn)行容器數(shù)據(jù)卷掛載,指定redis.conf配置文件啟動,使用-d參數(shù)后臺啟動redis服務(wù)(創(chuàng)建其他容器實例,命令格式也差不多這樣)
注意:里面路徑參數(shù)值,讀者應(yīng)該根據(jù)自己的實際情況進(jìn)行修改
docker run -p 6379:6379 --name myRedis6.0.8 --privileged=true -v /Applications/redis-6.0.8/config/redis.conf:/etc/redis/redis.conf -v /Applications/redis-6.0.8/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
- 4.執(zhí)行并校驗Redis服務(wù)結(jié)果:成功可用!
- 5.退出容器時,注意使用
ctrl
+p
+q
方式,這樣不會關(guān)閉容器
解決方案二(了解拓展):該方案下Redis容器實例重啟時,Redis服務(wù)不會自動啟動,還是需要進(jìn)去手動啟動Redis服務(wù)。使用前端交互式命令,進(jìn)行手動啟動Redis服務(wù)
- 1.無需修改配置文件參數(shù)
daemonize
值,yes
或者no
都行,這個參數(shù)表示創(chuàng)建Redis服務(wù)的進(jìn)程,是否為守護(hù)進(jìn)程;僅僅會導(dǎo)致使用命令redis-server /etc/redis/redis.conf啟動服務(wù)時,形式不一樣罷了;
(1)如果為yes
則啟動時可以直接后臺啟動,不用一直保留終端窗口開著;
(2)如果為no
當(dāng)前這種解決方案也可以使用,但是就不推薦了,因為這會需要終端窗口一直保持開著才行,否則就會關(guān)閉Redis服務(wù)
- 2.刪除之前創(chuàng)建的Redis容器實例:
docker rm -f 容器id
- 3.復(fù)雜使用run命令創(chuàng)建redis容器實例,且進(jìn)行容器數(shù)據(jù)卷掛載,且使用交互式進(jìn)入容器里面,該方式并不會啟動Redis服務(wù)進(jìn)程,需要到容器里面進(jìn)行手動啟動Redis服務(wù)(創(chuàng)建其他容器實例,命令格式也差不多這樣)
注意:里面路徑參數(shù)值,讀者應(yīng)該根據(jù)自己的實際情況進(jìn)行修改
docker run -p 6379:6379 --name myRedis6.0.8 --privileged=true -v /Applications/redis-6.0.8/config/redis.conf:/etc/redis/redis.conf -v /Applications/redis-6.0.8/data:/data -it redis:6.0.8 /bin/bash
- 4.在容器里面手動啟動Redis服務(wù),并且驗證Redis服務(wù)是否可用:成功可用!
#使用指定配置文件啟動Redis服務(wù)
redis-server /etc/redis/redis.conf
- 5.退出容器驗證結(jié)果:成功可用