人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

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

發(fā)布日期:2022-01-04 00:59 | 文章來源:源碼中國

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

通過docker ps -a查看發(fā)現(xiàn),centos8容器已經(jīng)處于停止狀態(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

為什么退出?

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

解決方法

以前臺進程的形式運行

將運行的程序以前臺進程的形式運行,如果容器需要同時啟動多個進程,那么也只需要將其中一個掛起到前臺即可。

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

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

又或者是Web容器:

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

取巧方式

添加類似于 tail top 這種可以前臺運行的程序,持續(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容器時,可以做一個手腳:做一個死循環(huán),持續(xù)輸出任意,這樣容器不會認為沒事可做而自殺了。

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

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

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

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

start.sh中報錯代碼段如下

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)過查閱比較,因為我的start.sh在報錯語句之前也有if語句,但是沒報錯,發(fā)現(xiàn)兩處區(qū)別為第一處if使用的是單[],將代碼改為[],則成功,修改如下:

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

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

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部