濮阳杆衣贸易有限公司

主頁 > 知識庫 > 解決docker run 或者 docker restart 啟動鏡像就自動退出

解決docker run 或者 docker restart 啟動鏡像就自動退出

熱門標(biāo)簽:新鄉(xiāng)牧野400電話申請 百度地圖底圖標(biāo)注 高德地圖標(biāo)注足跡怎么打標(biāo) 中國地圖標(biāo)注上各個(gè)省 激光標(biāo)記地圖標(biāo)注 智能電銷機(jī)器人真的有用么 電銷智能機(jī)器人試用 企業(yè)辦理400電話收費(fèi)標(biāo)準(zhǔn) 撫州市城區(qū)地圖標(biāo)注

執(zhí)行命令:docker run --name centos8 -d centos /bin/bash,通過docker ps查看正在運(yùn)行中容器,找不到centos8。

通過docker ps -a查看發(fā)現(xiàn),centos8容器已經(jīng)處于停止?fàn)顟B(tài)了

[root@MiWiFi-R4A-srv server]$ docker run --name centos8 -d centos /bin/bash
a770630ca865b3c3346a321a383f302ed22af9281be8482f4f4debc59218d0d1
[root@MiWiFi-R4A-srv server]$ docker ps
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES
[root@MiWiFi-R4A-srv server]$ docker ps -a
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS      PORTS    NAMES
a770630ca865  centos    "/bin/bash"    37 seconds ago  Exited (0) 35 seconds ago      centos8

為什么退出?

這是因?yàn)閐ocker后臺運(yùn)行,必須有一個(gè)前臺進(jìn)程。docker運(yùn)行的命令如果不是那些一直掛起的命令(e.g. top,ping),就是會自動退出的。而上面的代碼中-d centos就是需要執(zhí)行的指定的命令。命令如果執(zhí)行完畢了或者應(yīng)用終結(jié)時(shí),容器會自動停止。

解決方法

以前臺進(jìn)程的形式運(yùn)行

將運(yùn)行的程序以前臺進(jìn)程的形式運(yùn)行,如果容器需要同時(shí)啟動多個(gè)進(jìn)程,那么也只需要將其中一個(gè)掛起到前臺即可。

比如上面所說的 centos 容器,只需要將啟動指令修改為交互方式啟動:

docker run --name centos8 -it centos /bin/bash

又或者是Web容器:

service php5-fpm start && nginx -g "daemon off;"

取巧方式

添加類似于 tail top 這種可以前臺運(yùn)行的程序,持續(xù)輸出log文件即可。

service nginx start && service php5-fpm start && tail -f /var/log/nginx/error.log

再以上面所說的 web 容器為例,可以寫成:

service nginx start && service php5-fpm start && tail -f /var/log/nginx/error.log

自己寫腳本

在啟動centos/ubuntu容器時(shí),可以做一個(gè)手腳:做一個(gè)死循環(huán),持續(xù)輸出任意,這樣容器不會認(rèn)為沒事可做而自殺了。

docker run -d centos /bin/bash -c "while true; do echo hello world; sleep 1; done"

補(bǔ)充知識:docker中啟動容器時(shí)CMD調(diào)用的sh腳本中if命令報(bào)未預(yù)期的符號 if[[的解決辦法

最近通過Dockerfile編寫鏡像,CMD中調(diào)用的是sh腳本(start.sh)進(jìn)行啟動容器,通過docker run啟動時(shí),啟動不成功,進(jìn)行docker logs 容器ID,發(fā)現(xiàn)報(bào)錯(cuò)為:未預(yù)期的符號 if [[

我直接在外部linux系統(tǒng)調(diào)用執(zhí)行start.sh是成功的,通過docker exec 進(jìn)入容器,在容中調(diào)用start.sh也未報(bào)錯(cuò),命令中需要啟動的程序都成功啟動。腳本直接執(zhí)行沒問題,通過docker run卻報(bào)錯(cuò),百思不得其解。

start.sh中報(bào)錯(cuò)代碼段如下

if [[ -e /home/dc/testnn-aaa.zip ]];then
 rm -rf /home/testnn-aaa
 unzip -q -o -d /home testnn-aaa.zip
 echo "unzip zip finished" 
else 
 echo "dc zip not exist"
fi

經(jīng)過查閱比較,因?yàn)槲业膕tart.sh在報(bào)錯(cuò)語句之前也有if語句,但是沒報(bào)錯(cuò),發(fā)現(xiàn)兩處區(qū)別為第一處if使用的是單[],將代碼改為[],則成功,修改如下:

if [ -e /home/dc/testnn-aaa.zip ];then

以上這篇解決docker run 或者 docker restart 啟動鏡像就自動退出就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

標(biāo)簽:延安 臨汾 西安 海西 邯鄲 南通 忻州 辛集

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解決docker run 或者 docker restart 啟動鏡像就自動退出》,本文關(guān)鍵詞  解決,docker,run,或者,restart,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解決docker run 或者 docker restart 啟動鏡像就自動退出》相關(guān)的同類信息!
  • 本頁收集關(guān)于解決docker run 或者 docker restart 啟動鏡像就自動退出的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    阿克苏市| 永春县| 彭山县| 奎屯市| 长宁区| 诸城市| 许昌县| 开化县| 如皋市| 广灵县| 建平县| 中阳县| 嘉峪关市| 晋州市| 旺苍县| 巴林左旗| 阿坝县| 康平县| 徐闻县| 锡林浩特市| 金阳县| 庆阳市| 平利县| 万载县| 永兴县| 桂平市| 松潘县| 连州市| 新乡县| 汝州市| 天津市| 郓城县| 仙游县| 枣强县| 安西县| 沂水县| 嘉峪关市| 临沂市| 吉林市| 荣成市| 获嘉县|