91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用docker run啟動鏡像出現自動退出如何解決

發布時間:2020-11-23 16:14:12 來源:億速云 閱讀:1562 作者:Leah 欄目:開發技術

使用docker run啟動鏡像出現自動退出如何解決?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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

通過docker ps -a查看發現,centos8容器已經處于停止狀態了

[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就是需要執行的指定的命令。命令如果執行完畢了或者應用終結時,容器會自動停止。

解決方法

以前臺進程的形式運行

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

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

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

又或者是Web容器:

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

取巧方式

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

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

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

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

我直接在外部linux系統調用執行start.sh是成功的,通過docker exec 進入容器,在容中調用start.sh也未報錯,命令中需要啟動的程序都成功啟動。腳本直接執行沒問題,通過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

經過查閱比較,因為我的start.sh在報錯語句之前也有if語句,但是沒報錯,發現兩處區別為第一處if使用的是單[],將代碼改為[],則成功,修改如下:

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

關于使用docker run啟動鏡像出現自動退出如何解決問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鲁甸县| 洪湖市| 垣曲县| 大同市| 社会| 岳普湖县| 迁安市| 精河县| 杭锦后旗| 绍兴市| 大同市| 常山县| 偏关县| 曲麻莱县| 新竹县| 旺苍县| 沛县| 永登县| 柞水县| 龙岩市| 涿州市| 石狮市| 玉屏| 桦甸市| 延长县| 临安市| 安乡县| 游戏| 涟源市| 富民县| 互助| 奈曼旗| 肇东市| 泌阳县| 荆门市| 腾冲县| 灵台县| 井研县| 山东省| 高碑店市| 绥化市|