Dockerfile減少構建鏡像大小的方法


這幾天基於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

 

如果安裝軟件包多,可以省下幾百兆

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM