每天5分鐘玩轉 Docker 容器技術(15)
阿新 • • 發佈:2019-01-03
包括 Dockerfile 在內的任何指令碼和程式都會出錯。有錯並不可怕,但必須有辦法排查,所以本節討論如何 debug Dockerfile。
先回顧一下通過 Dockerfile 構建映象的過程:
-
從 base 映象執行一個容器。
-
執行一條指令,對容器做修改。
-
執行類似 docker commit 的操作,生成一個新的映象層。
-
Docker 再基於剛剛提交的映象執行一個新容器。
-
重複 2-4 步,直到 Dockerfile 中的所有指令執行完畢。
從這個過程可以看出,如果 Dockerfile 由於某種原因執行到某個指令失敗了,我們也將能夠得到前一個指令成功執行構建出的映象,這對除錯 Dockerfile 非常有幫助。我們可以執行最新的這個映象定位指令失敗的原因
我們來看一個除錯的例子。Dockerfile 內容如下:
執行 docker build
:
Dockerfile 在執行第三步 RUN 指令時失敗。我們可以利用第二步建立的映象 22d31cc52b3e 進行除錯,方式是通過 docker
run -it
啟動映象的一個容器。
手工執行 RUN 指令很容易定位失敗的原因是 busybox 映象中沒有 bash。雖然這是個極其簡單的例子,但它很好地展示了除錯 Dockerfile 的方法。
到這裡相信大家對 Dockerfile 的功能和使用流程有了比較完整的印象,但還沒有系統學習 Dockerfile 的各種指令和實際用法,下節會開始這個主題。