1. 程式人生 > >每天5分鐘玩轉 Docker 容器技術(15)

每天5分鐘玩轉 Docker 容器技術(15)

包括 Dockerfile 在內的任何指令碼和程式都會出錯。有錯並不可怕,但必須有辦法排查,所以本節討論如何 debug Dockerfile。

先回顧一下通過 Dockerfile 構建映象的過程:

  1. 從 base 映象執行一個容器。

  2. 執行一條指令,對容器做修改。

  3. 執行類似 docker commit 的操作,生成一個新的映象層。

  4. Docker 再基於剛剛提交的映象執行一個新容器。

  5. 重複 2-4 步,直到 Dockerfile 中的所有指令執行完畢。

從這個過程可以看出,如果 Dockerfile 由於某種原因執行到某個指令失敗了,我們也將能夠得到前一個指令成功執行構建出的映象,這對除錯 Dockerfile 非常有幫助。我們可以執行最新的這個映象定位指令失敗的原因

我們來看一個除錯的例子。Dockerfile 內容如下:

執行 docker build

Dockerfile 在執行第三步 RUN 指令時失敗。我們可以利用第二步建立的映象 22d31cc52b3e 進行除錯,方式是通過 docker run -it 啟動映象的一個容器。

80.png

手工執行 RUN 指令很容易定位失敗的原因是 busybox 映象中沒有 bash。雖然這是個極其簡單的例子,但它很好地展示了除錯 Dockerfile 的方法。

到這裡相信大家對 Dockerfile 的功能和使用流程有了比較完整的印象,但還沒有系統學習 Dockerfile 的各種指令和實際用法,下節會開始這個主題。


二維碼+指紋.png