调试docker build过程中出错的Dockerfile
2020-12-20 17:40
176 查看
原理
当我们执行
docker build命令使用Dockerfile构建一个新的镜像时,docker内部的构建过程大致如下:
- 从基础镜像运行一个容器;
- 执行一条指令,对容器做修改;
- 执行类似
docker commit
的操作,生成一个新的镜像层; - Docker会再基于刚刚提交的镜像运行一个新容器;
- 重复2 ~ 4步,直到Dockerfile中的所有指令执行完毕。
因此,我们只需要在出错的时候重新启动出错前一步的Docker容器即可回溯到出错前的场景,然后再手动执行出错的命令来分析出错的原因。
举个栗子
执行
docker build过程中出现如下错误:
Step 9/26 : RUN XXXXXX ... ... ---> fb41878be150 Step 10/26 : RUN XXXXXX ---> Running in 24bc7a0a5c87 ... error: XXX
可以看到在Step9之后会临时保存 container:
fb41878be150我们只需执行以下命令即可到达出错前的容器状态:
docker container run -it fb41878be150 /bin/bash
最后再根据实际Dockerfile中Step10中的命令来手动执行排查出错的原因即可。
参考
相关文章推荐
- 调试程序出错/usr/bin/ld: cannot open output file test: Is a directory
- Dockerfile语法解释与过程
- dockerfile构建过程与构建缓存
- 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)
- Apache 安装过程中出错/usr/lib/libexpat.so: could not read symbols: File in wrong format的解决办法
- Dockerfile中ONBUILD的用法
- 【Dockerfile】Dockerfile构建过程-去除缓存构建
- 通过maven 打docker 镜像包,出错ADD failed: stat /var/lib/docker/tmp/docker-builderXXXXXX: no such file or dir
- docker maven 出错:Failed to execute goal com.spotify:docker-maven-plugin:...: Request error: POST https://192.168.99.100:2376/build?t=
- docker~从Dockerfile到Container的过程(终于算是OK了)
- VS2008/VS2013 C++调用Python Build出错cannot open file 'python27_d.lib'
- Docker~从Dockerfile到Container的过程
- DockerFile创建一个镜像过程
- 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)
- 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)
- android 打包出错 Unable to build:the file dx.jar was not loaded from the SDK folder
- 使用 DockerFile 构建镜像遇到"docker build" requires exactly 1 argument(s). See 'docker build --help'.的问题
- 调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)
- Docker(镜像层缓存,Dockerfile调试)
- Android系统移植与调试之------->build.prop生成过程分析