得到一份新的docker镜像后,如果这个镜像不能使用,无法启动容器。该如何调试修改呢?正常情况下来说,要调试修改docker,就必须进入相关容器,而相关容器报错,无法启动,那么就无法调试。这就成了先有鸡,还是先有蛋的著名悖论了。

苏南大叔在本篇文章描述的内容是:如何修改调试已有的docker镜像。友情出境的是@特总 的cmswingdocker镜像。在这里,对特总提供实验镜像,表示感谢。当然本篇文章,并不是讲述如何使用cmswingdocker镜像的,仅仅是为了说明修改调试docker镜像的步骤而已。

苏南大叔:以cmswing为例,如何调试修改docker现有镜像? - docker-family
以cmswing为例,如何调试修改docker现有镜像?(图3-1)

调试修改docker镜像的整体思路

书接前文,苏南大叔实例化了cmswing的官方0.4版本镜像,但是失败了。docker ps -a的结果,显示Exited (1) 24 seconds ago。那么,如何查找docker的具体失败报错信息呢?又如何修改docker内的逻辑呢?

这个部分比较复杂了,是一系列docker命令的反复组合。基本的思路是这样的:

  • docker run或者docker start一个容器,容器报错。
  • 使用docker logs -f查看报错信息。
  • 使用docker ps -a查看入口文件地址。
  • 删除当前报错的容器,docker rm
  • 使用新的命令参数docker run -it进入新的测试容器,查看入口文件的逻辑,然后修改保存容器内的入口文件逻辑,尽量调试完整,没有错误之后,退出当前容器。
  • 可能需要使用docker start或者docker restart或者docker stop来操作容器,调整运行状态查看效果。
  • 使用docker commit把当前容器,提交为一个新的镜像版本。
  • 删除实验用的的容器,docker rm
  • 重复第一步。docker run一个新的容器,看看效果。

整体的思路有了之后,苏南大叔来分步骤说明一下。docker run或者docker start在上一篇文章里面,已经描述过了。

镜像调试步骤补充docker imagesdocker rmi

用户查看镜像列表的辅助命令,如下所示,注意是images,复数s

docker images

苏南大叔:以cmswing为例,如何调试修改docker现有镜像? - docker-images
以cmswing为例,如何调试修改docker现有镜像?(图3-3)

删除不满意的镜像的方式是:

docker rmi <镜像id>

<镜像id>来自于docker images里面的IMAGE ID这一列。比如:

docker rmi 515ec1cf6d92

总结

通过本文的一系列操作,就可以修改调试一个新的镜像了。是不是有些复杂了... 苏南大叔表示:如果您有更好的思路,欢迎提供给苏南大叔。谢谢。

更多苏南大叔编写的docker相关的经验文章,请猛击下面的链接查看。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   docker    cmswing

本站的忠实读者小伙伴,正在阅读下面这些文章: