溫馨提示×

溫馨提示×

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

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

在docker中使用 CMD執(zhí)行sh腳本時出現(xiàn) not found/run.sh:報錯如何解決

發(fā)布時間:2020-11-21 14:33:16 來源:億速云 閱讀:4531 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了在docker中使用 CMD執(zhí)行sh腳本時出現(xiàn) not found/run.sh:報錯如何解決,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

Dockerfile配置沒有問題,為什么執(zhí)行ENTRYPOINT命令時一直錯誤?

容器一啟動就退出了。

查了不少資料,想了好久才發(fā)現(xiàn)原因。

在docker中使用 CMD執(zhí)行sh腳本時出現(xiàn) not found/run.sh:報錯如何解決

run.sh是被COPY指令復(fù)制到容器中的,而本機(jī)是windows,默認(rèn)的換行符是\n,故而復(fù)制過去無法被執(zhí)行。

解決辦法很簡單,切換文件格式為LF即可。

在docker中使用 CMD執(zhí)行sh腳本時出現(xiàn) not found/run.sh:報錯如何解決

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

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

我直接在外部linux系統(tǒng)調(diào)用執(zhí)行start.sh是成功的,通過docker exec 進(jìn)入容器,在容中調(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

上述內(nèi)容就是在docker中使用 CMD執(zhí)行sh腳本時出現(xiàn) not found/run.sh:報錯如何解決,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI