这几天基于Dockerfile构建应用需要的特殊的镜像,比如Nginx需要add很多module的,就需要在镜像内编译和做build.

通过Dockerfile构建镜像时,很容易把镜像构建得很大。

从通俗得原来上来说,一次RUN形成新的一层,如果没有在同一层删除,无论文件是否最后删除,都会带到下一层。

所以建议如下:

  • 尽量在同一层运行更多的命令,比如
RUN cp /usr/local/aa.tar.gz /opt
RUN tar xvf /opt/aa.tar.gz
RUN rm -rf /opt/aa.tar.gz

可以修改成

RUN cp /usr/local/aa.tar.gz /opt && \
tar xvf /opt/aa.tar.gz && \
rm -rf /opt/aa.tar.gz
  • 如果在镜像中通过yum安装软件包,尽量在一行装完,不要多行,同样安装完后运行,clean all后对大小影响很大
yum clean all
RUN yum -y —enablerepo=rpmforge-extras install php \
php-pecl-xdebug \
php-soap \
php-mysql \
php-gd \
php-process \
php-xml \
php-mbstring \
mysql-server \
php-zendframework \
htmlpurifier \
jpgraph-tuleap \
php-pear-Mail-mimeDecode \
rcs \
cvs \
php-guzzle \
php-password-compat \
unzip \
tar \
subversion \
bzip2 \
php-pecl-xdebug \
git \
&& yum clean all

如果安装软件包多,可以省下几百兆

Dockerfile减少构建镜像大小的方法的更多相关文章

  1. 使用Dockerfile来构建镜像

    Dockerfile原理 创建Dockerfile Dockerfile实例 Dockerfile指令 注释 FROM MAINTAINER RUN ADD WORKDIR ENV USER COPY ...

  2. 优化 Docker 镜像大小常见方法

    平时我们构建的 Docker 镜像通常比较大,占用大量的磁盘空间,随着容器的大规模部署,同样也会浪费宝贵的带宽资源.本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker ...

  3. Docker:dockerfile自动构建镜像 [六]

    一.手动docker镜像的缺点 相对于手动制作的docker镜像,使用dockerfile构建的镜像有以下优点: 1.dockerfile只有几kb,便于传输 2.使用dockerfile构建出来的镜 ...

  4. Docker系列(三)Dockerfile 离线构建镜像

    一.Dockfile介绍: Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfil ...

  5. 013、Dockerfile构建镜像(2019-01-02 周三)

    参考https://www.cnblogs.com/CloudMan6/p/6830067.html   Dockerfile构建镜像过程分析   root@docker-lab:~/111# ls  ...

  6. Docker、Dockerfile、Docker镜像、容器这些都是什么鸟?

    老生常谈,再再再……普及一下: Docker:最早是dotCloud公司出品的一套容器管理工具,但后来Docker慢慢火起来了,连公司名字都从dotCloud改成Docker. Dockerfile: ...

  7. docker学习笔记(2) 构建镜像

    一.手动构建一个简单镜像 我们以构建nginx的docker镜像为例:手动构建镜像 docker pull centos    安装基础镜像docker run --name mynginx -it ...

  8. Dockerfile制作自定义镜像

    本文介绍最精简的Dockerfile文件构建镜像,Docker启动的时候可以启动一个shell脚本 1.首先编写Dockerfile文件 说明 1.启动的这个shell脚本一定是不退出的,比如服务器的 ...

  9. docker:(2)通过Dockerfile构建镜像并发布web项目

    上一篇讲解了docker的基本使用 http://www.cnblogs.com/xiaochangwei/p/8204511.html 虽然通过修改获取到的镜像可以达到使用目的,但是多操作几次就会发 ...

随机推荐

  1. [New learn]GCD的卡死现象分析研究

    https://github.com/xufeng79x/GCDDemo 1.简介 前接[New learn]GCD的基本使用,我们分析了GCD的一般使用方法,其中比较特殊的是在分析到主队列的时候发生 ...

  2. make :err Makefile.ssl is older than Makefile.org. Reconfigure the source tree (via './config' or 'perl Configure'), please.

    内核编译时出现错误 Makefile.ssl is older than Makefile.org. Reconfigure the source tree (via './config' or 'p ...

  3. FineReport——登录不到决策系统

    在不断的测试过程中,可能会造成缓存数据的累积,所以在登录过程中可能会出现登录不到决策系统,而是跳转到某一模板页面 解决方法就是清理缓存或者换一个浏览器测试.

  4. JavaScript 正则表达式的入门与使用

    知道正则表达式已经很久了,粗略会看懂一些,不过以前没有系统的学习,最近在看<JS权威指南>,刚好看到了看到正则表达式部分,就比较系统的学习了正则表达式. 先说一下正则表达式的一些基本知识 ...

  5. Exchanger学习

    Java并发新构件之Exchanger JDK API Exchaner 介绍 JDK API 解释 A synchronization point at which threads can pair ...

  6. transition结合:after,:before实现动画

    div代码 <div class='div'> hover </div> css代码 .div{ width:200px; height:100px; line-height: ...

  7. 不断学习UI框架的写法

    在web开发的过程中,我们会需要用到很多大大小小的插件,比如文本框,下拉树,下拉框等等各种各样的都需要.或许在开发的网页中会用到同一种插件来满足各种各样复杂的业务逻辑,比如简单的一个下拉树,有的地方需 ...

  8. hdu 5117 数学公式展开 + dp

    题目大意:有n个灯泡,m个按钮,(1 <= n, m <= 50),每个按钮和ki 个灯泡相关, 按下后,转换这些灯泡的状态,问你所有2^m的按下按钮的 组合中亮着的灯泡的数量的三次方的和 ...

  9. java 中的try catch在文件相关操作的使用

    import java.io.CharConversionException; import java.io.FileNotFoundException; import java.io.FileRea ...

  10. 【SQL】ORACLE在sqlplus中使用spool方式生成建表语句

    在实际生产中有时我们需要将一张表的数据导入到另外一张表,如果有PLSQL,我们可以通过PLSQL工具将数据导出为sql脚本,然后再在另外一个数据库中执行这个脚本.但有时在实际生产中我们没有PLSQL这 ...