包括 Dockerfile 在內的任何腳本和程序都會出錯。有錯並不可怕,但必須有辦法排查,因此本節討論如何 debug Dockerfile。docker
先回顧一下經過 Dockerfile 構建鏡像的過程:bash
從 base 鏡像運行一個容器。學習
執行一條指令,對容器作修改。ui
執行相似 docker commit 的操做,生成一個新的鏡像層。spa
Docker 再基於剛剛提交的鏡像運行一個新容器。debug
重複 2-4 步,直到 Dockerfile 中的全部指令執行完畢。調試
從這個過程能夠看出,若是 Dockerfile 因爲某種緣由執行到某個指令失敗了,咱們也將可以獲得前一個指令成功執行構建出的鏡像,這對調試 Dockerfile 很是有幫助。咱們能夠運行最新的這個鏡像定位指令失敗的緣由。code
咱們來看一個調試的例子。Dockerfile 內容以下:orm
執行 docker build
:ci
Dockerfile 在執行第三步 RUN 指令時失敗。咱們能夠利用第二步建立的鏡像 22d31cc52b3e 進行調試,方式是經過 docker run -it
啓動鏡像的一個容器。
手工執行 RUN 指令很容易定位失敗的緣由是 busybox 鏡像中沒有 bash。雖然這是個極其簡單的例子,但它很好地展現了調試 Dockerfile 的方法。
到這裏相信你們對 Dockerfile 的功能和使用流程有了比較完整的印象,但尚未系統學習 Dockerfile 的各類指令和實際用法,下節會開始這個主題。