从docker镜像里提取dockerfile的两种方法

目录
  • 前言
  • 从镜像中提取dockerfile的两种方法
    • 1、history参数
    • 2、dfimage
  • 补充:如何设置永久的别名
  • 总结

前言

hello,大家好,今天在玩docker的时候发现了很好用的东西,他就是用来提取镜像中的dockerfile的。这个是前者留下来的镜像,但是dockerfile被删除了,现在想知道dockerfile里面是如何写的,然后去查了查就有了新的发现——通过镜像来提取dockerfile,接下来我就把方法分享给大家

从镜像中提取dockerfile的两种方法

1、history参数

我们可以直接用docker自带的参数来查看镜像的dockerfile,但有一点就是看的不完全,只能看到前面的一小部分;
例如:

#docker history 镜像名称:标签
docker history nginx:latest

虽然docker history命令可以看到所有历史层级的操作,但是还是需要手动去写Dockerfile,看的不是那么全,所以我们还有一个能看到非常详细的工具↓

2、dfimage

首先他不是一个命令,他是一个工具

dfimage是一个alpine的镜像,启动的时候,通过将docker.sock映射到容器内部来运行,通常将这个操作做成别名,让他变成一个工具(做完别名不能换新的bash,否则该别名就会消失,如果不想消失,可以做一个永久的别名,这样不管在任何地方都可以用了)

alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"  

dfimage -sV=1.36 nginx:latest

我们拿nginx镜像试验下

先pull一个nginx镜像,我这里之前有,就直接用了,接着通过上面提到的命令,别名一个dfimage命令

做好别名之后,通过dfimage去生成nginx的Dockerfile,其实就是启动一个容器工具,执行完之后即删除该容器,镜像保留

如果有报错,不能执行,估计就是缺少-sV=1.36,具体这个报错呢,暂时还没有研究,但是加上-sV=1.36就可以。

#dfimage -sV=1.36 镜像名称:标签
dfimage -sV=1.36 nginx:latest

即可看到完整的dockerfile,这个工具查看的非常的详细

补充:如何设置永久的别名

编辑 .bashrc文件,该文件主要用于保存一些个性化的设置,如命令别名、路径等:

vim .bashrc

进入该文件里,我们要在最后一行或者最后在空出来几行来新增我们的个性化配置,如设置别名:

alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"

比如下图

设置完之后,我们:wq保存并退出

:wq

保存文件后,在执行 source .bashrc命令,使之生效。

然后自己可以去测试一下;

最后,需要我们注意的是,.bashrc文件是针对用户级别的个性化设置。切记切记!

总结

到此这篇关于从docker镜像里提取dockerfile的两种方法的文章就介绍到这了,更多相关docker镜像提取dockerfile内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Docker使用Dockerfile来创建镜像

    本文学习Dcokerfile的基本命令,并且创建一个支持ssh服务的镜像. 1.Dockerfile 1.1基本案例 dockerfile可以说是docker的描述符,该文件定义了docker镜像的所能拥有哪些东西.基本格式如下: 第一行指定该镜像基于的基础镜像(必须) FROM java:8 维护者信息 MAINTAINER quding niudear@foxmail.com 镜像操作指令 RUN echo $JAVA_HOME 启动时操作的命令 CMD ./usr/sbin/nginx 该

  • docker官方镜像下载及使用Dockerfile创建镜像的方法

    1.登陆docker hut官方网站:https://hub.docker.com/ 2.search centos 3.docker pull centos:7.2.1511 4.创建Dockerfile文件: [root@vmhost centos7.2]# cat Dockerfile [plain] view plain copy FROM centos:7.2.1511 MAINTAINER wanghongwei(wanghongwei@4paradigm.com) RUN yum

  • docker使用Dockerfile构建镜像的方法

    构建镜像 前面我们使用各种镜像进行测试演示,很多情况下我们是需要自己的镜像,满足自己业务需要的镜像,这就需要我们能够定制自己需要的镜像,构建 Docker 镜像有以下两种方法. 使用 docker commit 命令. 使用 docker build 命令和 Dockerfile 构建文件. 现在我们不推荐使用 docker commit 命令,而应该使用更灵活.更强大的 Dockerfile 来构建 Docker 镜像. 1.使用 commit 命令构建 docker commit 命令是创建

  • Docker如何使用Dockerfile构建镜像

    Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命令.Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile.Docker程序将读取Dockerfile,根据指令生成定制的image.相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,它明确的表明image是

  • 通过Dockerfile构建Docker镜像的方法步骤

    Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. Dockerfile支持Shell类的行尾添加"\"的命令换行方式,以及行首"#"进行注释的格式. 使用Dockerfile构建Docker镜像时注意事项: (1).尽量选取满足需求但较小的基础系统镜像; (2).清理编译生成文件.安装包的缓存等临时文件; (3).安装各个软件时候要指定准确的版本号,并避免引入不

  • 详解docker中Dockerfile指令创建镜像

    写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境,跑一个spring boot小项目. Dockerfile: Dockerfile由一行行命令语句组成,并且支持用"#"开头作为注释,一般的,Dockerfile分为四部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行的指令. Dockerfile的书写规则及指令使用方法 Do

  • 从docker镜像里提取dockerfile的两种方法

    目录 前言 从镜像中提取dockerfile的两种方法 1.history参数 2.dfimage 补充:如何设置永久的别名 总结 前言 hello,大家好,今天在玩docker的时候发现了很好用的东西,他就是用来提取镜像中的dockerfile的.这个是前者留下来的镜像,但是dockerfile被删除了,现在想知道dockerfile里面是如何写的,然后去查了查就有了新的发现——通过镜像来提取dockerfile,接下来我就把方法分享给大家 从镜像中提取dockerfile的两种方法 1.hi

  • JS Input里添加小图标的两种方法

    我们在做网页的时候,经常需要在input里面添加小图标,那么这里就介绍比较常见的两种方法. 方法一 将小图标当做input的背景来插入,直接上代码吧: <style type="text/css"> *{ margin: 0; padding: 0; } input{ border: none; } .box{ height: 50px; background: yellow; } .box input{ width: 200px; height: 30px; border

  • 在vue-cli的组件模板里使用font-awesome的两种方法

    方法一: npm install font-awesome 在main.js里添加import 'font-awesome/css/font-awesome.css' 方法二: 在官网下载代码到本地,现在应该是font-awesome-4.7,把整个文件夹放到static文件夹中,然后在index.html中加上<link rel="stylesheet" href="/static/font-awesome-4.7/css/font-awesome.min.css&q

  • Docker创建镜像两种方法详解

     Docker创建镜像             最近学习Docker 的知识,偶然在网上看到关于Docker 创建对象的两种方法很好,这里记录下,也许可以帮助到你. 我们都知道Docker中我们是基于镜像来运行的容器,那如何创建镜像呢?创建镜像有两种方法,一是使用docker commit命令,二是使用docker build命令和Dockerfile文件.这里我们说的创建镜像是指基于一个已有的基础镜像比如ubuntu等,而不是从零创建一个全新的镜像. 下面分别简单介绍一下两种方法.      

  • Docker 镜像分层及dockerfile 编写技巧

    docker镜像分层 分层介绍 Dockerfile中的每个指令都会创建一个新的镜像层 镜像层将被缓存和复用 当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效 镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件 Docker镜像原理 Docker镜像是由特殊的文件系统叠加而成 ·最底端是bootfs,并使用宿主机的bootfs ·第二层是r

  • docker已启动容器修改添加端口映射的两种方法

    目录 简述 一.先提交,在配置 1.先将容器提交为镜像 2.创建新的容器并运行 二. 修改配置文件 1.关闭docker服务 2.修改hostconfig.json 3.修改config.v2.json 4.重启 docker服务 5.查看配置项已经修改成功 补充:docker容器怎么开端口 总结 简述 正常情况下,在你创建容器时可以添加多个端口映射,写法如下 每个端口映射都加一个-p docker run -itd --name centos -p 4000:8081 -p 3306:3306

  • 用JS动态改变表单form里的action值属性的两种方法

    方法1: <form id="form1" name="form1" method="post" action="../news/index.asp"> <table width="100%" height="43" border="0" cellpadding="0" cellspacing="0">

  • Java编程求二叉树的镜像两种方法介绍

    给出一棵二叉树,求它的镜像,如下图:右边是二叉树是左边二叉树的镜像. 仔细分析这两棵树的特点,看看能不能总结出求镜像的步骤.这两棵树的根节点相同,但他们的左右两个子节点交换了位置.因此我们不妨先在树中交换根节点的两个子节点,就得到了下面一幅图中的第二颗树 解法1(递归) 思路1:如果当前节点为空,返回,否则交换该节点的左右节点,递归的对其左右节点进行交换处理. /*class TreeNode{ int val; TreeNode left=null; TreeNode right=null;

  • python读取视频流提取视频帧的两种方法

    本文实例为大家分享了python读取视频流提取视频帧的具体代码,供大家参考,具体内容如下 方法一:通过imageio库和skimage库 1. 安装环境: pip install imageio pip install skimage 这时候会报错Please install the `scikit-image` package (instead of `skimage`) 所以按照提示操作即可: pip install scikit-image 环境安装成功. 2.通过python安装ffmp

  • vue 获取url里参数的两种方法小结

    我就废话不多说了,大家还是直接看代码吧~ 第一种: const query = Qs.parse(location.search.substring(1)) let passport = query.passport; 第二种: var query=this.$route.query; let lat = query.lat; 补充知识:Vue通过query获取路由参数 现在来讲Vue通过query获取路由参数 可以看见com1组件里的路由参数为 name=zhangsan&job=teache

随机推荐