深究Runc源碼-4-Start啟動流程分析
代碼基于1.1.0
runc start是啟動用戶定義的進程,流程如下。

首先通過state.json,重新獲取容器的狀態(tài)
通過State重新構(gòu)建Container實例
只能對Created狀態(tài)的容器執(zhí)行start,執(zhí)行Container.Exec,Container.Exec調(diào)用fifoOpen打開exec.fifo,此時runc init阻塞解除繼續(xù)運行,runc init通過exec.fifo會寫一個字符'0',然后執(zhí)行StartContainer Hooks,最后通過system.Exec調(diào)用將runc init變成用戶定義進程。runc start進程通過fifo.exec讀取到runc init寫入后刪除exec.fifo,流程結(jié)束。
開源的東西,轉(zhuǎn)發(fā)不需要說明出處,就說你自己寫的
標(biāo)簽: