一種定義docker鏡像啟動腳本的簡單方法

一種定義docker鏡像啟動腳本的簡單方法

自定義鏡像有兩種方法,首先是編寫dockerfile,其次是將容器提交為鏡像。兩種方式都可能需要定義鏡像啟動腳本,將容器中需要配置的環(huán)境變量,需要啟動的進程都準(zhǔn)備好。這樣別人用鏡像時可以直接使用。定義鏡像的啟動腳本有很多辦法,有些需要根據(jù)鏡像所屬的linux版本自身的啟動機制來實施。但是此類方法有個問題,不同的linux發(fā)行版,相同發(fā)行版的不同版本,相同發(fā)行版相同版本的不同裁剪力度的基礎(chǔ)鏡像都會導(dǎo)致啟動腳本千差萬別。

本文介紹一種簡單的方法,且好理解和非常通用,幾乎所有的linux鏡像都可以如法炮制,屢試不爽!假設(shè)我們有了一個容器,在將容器提交為鏡像之前,在容器根目錄新建一個腳本文件,在腳本文件中將啟動命令寫好。下面例子的啟動工作就是將vsftpd啟動。

新建腳本

vi /run.sh
chmod a+x /run.sh

文件中內(nèi)容如下

/usr/sbin/vsftpd
tail -f /run.sh

重點在于最后一行,它將自身顯示在標(biāo)準(zhǔn)輸出中且不會返回,相當(dāng)于一直在運行,這樣就避免了腳本run.sh執(zhí)行完之后自然結(jié)束,導(dǎo)致容器自動退出。接著就將該容器提交為鏡像。再寫一個dockerfile,基于前面的鏡像再做一個鏡像,dockerfile的最后一行指定啟動命令。

CMD /run.sh

新生成的鏡像,只要被執(zhí)行且不指定執(zhí)行時的啟動命令,其就會默認(rèn)執(zhí)行腳本run.sh。舉例如下

docker run -d --name some-container-name some-image-name
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容