博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第 3 章 镜像 - 015 - 调试 Dockerfile
阅读量:6840 次
发布时间:2019-06-26

本文共 1714 字,大约阅读时间需要 5 分钟。

如何 debug Dockerfile

通过 Dockerfile 构建镜像的过程

  1. 从 base 镜像运行一个容器
  2. 执行命令对容器做修改
  3. 执行类似 docker commit 的操作,生成一个新的镜像层
  4. Docker 再基于刚刚提交的镜像运行一个新容器
  5. 重复 2-4 步,直到 Dockerfile 中的所有指令执行完毕

如果 Dockerfile 由于某种原因执行到某个指令失败了,我们也将能够得到前一个指令成功执行构建出的镜像,可以运行最新的这个镜像定位指令失败的原因。

举个例子

Dockerfile

1 FROM busybox2 RUN touch tmpfile3 RUN /bin/bash -c echo "continue to build ....."4 COPY testfile /

 

 构建过程如下

1 root@ubuntu:~# cat Dockerfile  2 FROM busybox 3 RUN touch tmpfile 4 RUN /bin/bash -c echo "continue to build ....." 5 COPY testfile / 6 root@ubuntu:~#  7 root@ubuntu:~# docker build -t image-debug . 8 Sending build context to Docker daemon  23.04kB 9 Step 1/4 : FROM busybox10 latest: Pulling from library/busybox11 57c14dd66db0: Pull complete 12 Digest: sha256:b6e640a3768c460ad6066a003b6da52034c31aaf8500f9263057ddffcd830ef613 Status: Downloaded newer image for busybox:latest14  ---> 3a093384ac3015 Step 2/4 : RUN touch tmpfile16  ---> Running in 3ba6dbde130c17 Removing intermediate container 3ba6dbde130c18  ---> 3043ba551c4119 Step 3/4 : RUN /bin/bash -c echo "continue to build ....."20  ---> Running in a16303c0b2f721 /bin/sh: /bin/bash: not found22 The command '/bin/sh -c /bin/bash -c echo "continue to build ....."' returned a non-zero code: 127

 21行出现错误,可以使用 3043ba551c41 进行调试。

1 root@ubuntu:~# docker run -it 3043ba551c412 / # /bin/bash -c echo "continue to build ....."3 sh: /bin/bash: not found4 / #

手工执行 RUN 指令很容易定位失败的原因是 busybox 镜像中没有 bash。

 

------------引用来自------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587606&idx=1&sn=656e82adf088ae2652d245dc49b94873&chksm=8d30808fba470999569781cb1f8db769126769717f8899993cab6e4c36c65da0ed4a3205cf99&scene=21#wechat_redirect

转载于:https://www.cnblogs.com/gsophy/p/10221885.html

你可能感兴趣的文章
SqlDataReader生成动态Lambda表达式
查看>>
leetcode897
查看>>
莫比乌斯函数+莫比乌斯反演
查看>>
90%的用户都不知道手机内部功能
查看>>
CSU 1325: A very hard problem 中南月赛的一道题。
查看>>
设置串行端口的通信参数
查看>>
JPA基础(二)(转)
查看>>
js获取当前浏览器地址栏的链接,然后在链接后面加参数
查看>>
设为首页 收藏(IE可用)
查看>>
Cesium 创建Geometry
查看>>
OpenGL的几何变换4之内观察全景图
查看>>
@RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区别...
查看>>
OCIEnvCreate failed with return code -1 but error message text was not available with ODP.net
查看>>
mysql日常错误信息解决方法:InnoDB: and force InnoDB to continue crash recovery here.
查看>>
jQuery中的动画
查看>>
在Linux服务器上添加ip白名单允许ssh登录访问
查看>>
JAVA入门到精通-第71讲-学生管理系统3-增删改查
查看>>
如何设置putty远程登录linux
查看>>
Mysql聚合函数
查看>>
React组件继承的由来
查看>>