包括 Dockerfile 在内的任何脚本和程序都会出错。有错并不可怕,但必须有办法排查,因此本节讨论如何 debug Dockerfile。docker
先回顾一下经过 Dockerfile 构建镜像的过程:bash
从 base 镜像运行一个容器。学习
执行一条指令,对容器作修改。ui
执行相似 docker commit 的操做,生成一个新的镜像层。debug
Docker 再基于刚刚提交的镜像运行一个新容器。调试
重复 2-4 步,直到 Dockerfile 中的全部指令执行完毕。code
从这个过程能够看出,若是 Dockerfile 因为某种缘由执行到某个指令失败了,咱们也将可以获得前一个指令成功执行构建出的镜像,这对调试 Dockerfile 很是有帮助。咱们能够运行最新的这个镜像定位指令失败的缘由。it
咱们来看一个调试的例子。Dockerfile 内容以下:容器
执行 docker build
:file
Dockerfile 在执行第三步 RUN 指令时失败。咱们能够利用第二步建立的镜像 22d31cc52b3e 进行调试,方式是经过 docker run -it
启动镜像的一个容器。
手工执行 RUN 指令很容易定位失败的缘由是 busybox 镜像中没有 bash。虽然这是个极其简单的例子,但它很好地展现了调试 Dockerfile 的方法。
到这里相信你们对 Dockerfile 的功能和使用流程有了比较完整的印象,但尚未系统学习 Dockerfile 的各类指令和实际用法,下节会开始这个主题。