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