解散Docker Image为Dockerfile

解散Docker Image为Dockerfile

生产环境中,对于运维来说,可能不需要亲自去编写Dockerfile来构建镜像,大多数是研发部门来做这个事情,但我认为运维岗位有必要清楚Dockerfile的构建过程,再不济也应该知道运行这个image时,最后的进程是怎么样的,这会更有利于测试维护。

在我的公司来说,底层运维和研发是搭不上话的,更别说了解Dockerfile了,这就需要自己来研究。

Docker也很友好的,可以通过命令查看镜像构建过程。

docker image histroy [IMAGE]
如:
$ docker image history busybox:latest 
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
a9d583973f65   8 weeks ago   /bin/sh -c #(nop) CMD ["sh"] 0B 
<missing>      8 weeks ago   /bin/sh -c #(nop) ADD file:b49bf6359240618f2? 1.23MB 

学习过Dockerfile应该知道,正常结构 CMD 或者 ENTRYPOINT 应该在文件末尾,用来挂起前台进程,docker image history看到的是倒序的,故,我在网上扒了个脚本,如下: 参考站点

#!/bin/bash
case "$OSTYPE" in
    linux*)
        docker history --no-trunc --format "{
   {.CreatedBy}}" $1 | # extract information from layers
        tac                                                    | # reverse the file
        sed 's,^\(|3.*\)\?/bin/\(ba\)\?sh -c,RUN,'             | # change /bin/(ba)?sh calls to RUN
        sed 's,^RUN #(nop) *,,'                                | # remove RUN #(nop) calls for ENV,LABEL...
        sed 's, *&& *, \\\n \&\& ,g'                           # pretty print multi command lines following Docker best practices
    ;;
    darwin*)
        docker history --no-trunc --format "{
   {.CreatedBy}}" $1 | # extract information from layers
        tail -r                                                | # reverse the file
        sed -E 's,^(\|3.*)?/bin/(ba)?sh -c,RUN,'               | # change /bin/(ba)?sh calls to RUN
        sed 's,^RUN #(nop) *,,'                                | # remove RUN #(nop) calls for ENV,LABEL...
        sed $'s, *&& *, \\\ \\\n \&\& ,g'                      # pretty print multi command lines following Docker best practices
    ;;
    *)
        echo "unknown OSTYPE: $OSTYPE"
    ;;
esac

使用方法

./script.sh [IMAGE]
# ./script.sh nginx:latest

只能提供大致的构建过程,至于中间在构建本地copy了什么文件,解压了什么文件,还是无从之晓的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101763.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker 常用命令总结[通俗易懂]

    注意stop,restart后的容器,或者commit后的镜像启动环境变量需要重新加载,比如source/etc/source我们运行docker容器的时候,使用了-d参数,把容器在后台运行后。1.启动dockerdockerrun-d-i-t&lt;imageID&gt;/bin/bash上述命令执行某些命令回报错FailedtogetD-Busco…

  • Petalinux系列——0.在Docker里玩转PetaLinux

    Petalinux系列——0.在Docker里玩转PetaLinux在Docker里玩转PetaLinux来自https://github.com/alexhegit/https://mp.weixin.qq.com/s/spaq_Sv1giraeIJgsKDQYA简介PetaLinuxPetaLinux是Xilinx推出的针对ZynqSoc,ZynqMPSOC嵌入式开发板的基于Yocto二次封装的LinuxBSP构建工具,支持Ubuntu…

  • docker 镜像导入导出_docker常用镜像

    docker 镜像导入导出_docker常用镜像将本机的镜像导出到压缩包,使用save和load进行导入和导出查看镜像列表dockerimages导出镜像dockersave0fdf2b4c26d3>images.tar同时导出多个dockersave-oimages.tarelastest/etm:2.4.0elastest/etm-jenkins:1.2.0导入镜像dockerload<images.tar…

  • 解决docker下载镜像速度过慢_docker镜像推荐

    解决docker下载镜像速度过慢_docker镜像推荐前言上一篇讲到pull镜像,但是pull镜像的时候下拉的速度实在感人,有什么解决办法吗?我们只需将docker镜像源修改为国内的将docker镜像源修改为国内的:在/etc/docker/d

  • docker 上传本地镜像_不同docker仓库镜像同步

    docker 上传本地镜像_不同docker仓库镜像同步前言之前通过docker搭建过jenkins+python3环境,如果想要在不同的机器上搭建一样的环境,就可以将之前搭建的镜像上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境。如果公开的话

  • 启动docker镜像命令_什么是docker镜像

    启动docker镜像命令_什么是docker镜像docker启动//加载镜像文件dockerload-imec2.tar//查看是否有mec:v2镜像dockerimagels//rundockerrun-itdmec:v2//查看容器iddockerps//执行dockerexec-it镜像idbash将文件从宿主机拷贝到docker里在宿主机里面执:dockercp宿主机中要拷贝的文件名及其路径容器名:要拷贝到容器里面对应的路径从docker里面拷文件到宿主机在宿主机

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号