docker 容器啟動(dòng)報(bào)錯(cuò) 如何看?我們?cè)赿ocker容器的使用過程中,難免會(huì)遇到一些問題。可以把常見的問題分為如下幾類。
應(yīng)用故障:應(yīng)用執(zhí)行狀態(tài)與預(yù)期不一致;
容器故障:無法正確創(chuàng)建、停止、更新容器等;
集群故障:集群創(chuàng)建失敗、更新失敗、無法連接等。
對(duì)于初學(xué)者而言,一個(gè)經(jīng)常遇到的問題是,Docker容器啟動(dòng)后自動(dòng)退出,docker logs也沒有特殊輸出。如果容器啟動(dòng)參數(shù)時(shí)包含“–restart=always” 或“–restart”,則會(huì)不停重啟。
這個(gè)問題常見的原因是,容器的PID1進(jìn)程(初始化進(jìn)程)不是一個(gè)長時(shí)間運(yùn)行的進(jìn)程,或者它啟動(dòng)了一個(gè)后臺(tái)進(jìn)程就退出。由于容器服務(wù)是以“detach”方式運(yùn)行容器,這樣當(dāng)PID1進(jìn)程結(jié)束后就會(huì)導(dǎo)致整個(gè)容器退出。
比如,用戶希望啟動(dòng)一個(gè)Ubuntu鏡像。
由于Ubuntu 鏡像缺省命令是“/bin/bash” 它在執(zhí)行后會(huì)自動(dòng)退出,我們需要將在服務(wù)的“command”在“更多設(shè)置”中將其修改為/bin/sh -c “while true; do sleep 10; done”這樣的死循環(huán);可以保證容器的持續(xù)運(yùn)行。
建議用戶在Docker鏡像的Dockerfile中,應(yīng)該設(shè)置正確的CMD或Entrypoint參數(shù),來保證容器的正確執(zhí)行。