Docker(镜像层缓存,Dockerfile调试)
1.镜像缓存1.镜像缓存:在构建或者下载镜像时候,当镜像层已经存在的时候,直接使用使用缓存, 不需要进行重新构建镜像,如果我们希望在构建镜像时不使用缓存,可以在 docker build 命令中加上 –no-cache 参数。如果我们改变 Dockerfile 指令的执行顺序,或者修改或添加指令,都会使缓存失效。2.Dockerfile 在执行的时候,当有执行过相同的代码并且顺序也一致的情况下,
1.镜像缓存
1.镜像缓存:在构建或者下载镜像时候,当镜像层已经存在的时候,直接使用使用缓存, 不需要进行重新构建镜像,如果我们希望在构建镜像时不使用缓存,可以在 docker build 命令中加上 –no-cache 参数。如果我们改变 Dockerfile 指令的执行顺序,或者修改或添加指令,都会使缓存失效。
2.Dockerfile 在执行的时候,当有执行过相同的代码并且顺序也一致的情况下,就会使用缓存镜像层进行构建新的镜像。Dockerfile 中每一个指令都会创建一个镜像层,上层是依赖于下层的。注:镜像层只是存在一个ID,镜像的内容存在host文件系统上,当需要的时候就使用了缓存。
2.Dockerfile调试
1.Dockerfile 构建镜像的过程
1.1.从 base 镜像运行一个容器。
1.2.执行一条指令,对容器做修改。
1.3.执行类似 docker commit 的操作,生成一个新的镜像层。
1.4.Docker 再基于刚刚提交的镜像运行一个新容器。
1.5.重复 2-4 步,直到 Dockerfile 中的所有指令执行完毕。
Dockerfile 由于某种原因执行到某个指令失败了,我们也将能够得到前一个指令成功执行构建出的镜像,这对调试 Dockerfile 非常有帮助。我们可以运行最新的这个镜像定位指令失败的原因。
见下图:
Dockerfile 内容
执行 docker build:
运行已经生成的容器,调试错误
注:Dockerfile执行的时候,会有许多错误,但是在执行到错误命令之前都会有容器生成的,这个时候自己进入容器进行执行命令,就可以看一下错误在哪里。
更多推荐
所有评论(0)