node.js - Centos镜像大小优化

【字号: 日期:2022-09-21浏览:25作者:雯心

问题描述

开发的时候要用到nodejs,node-canvas, node-opencv,所以安装了cairo和opencv,但是制作好镜像发现镜像大了300多M(其实一开始多了700多M,只写一句RUN的办法不再讨论),下面看Dockerfile:

FROM centos:7 # 没用alpine,安装各种包alpine还是有点麻烦,尝试过后放弃了MAINTAINER ykan <nameyukan@gmail.com>ENV PKG_CONFIG_PATH /usr/lib64/pkgconfigENV USER rootWORKDIR /root## 配置yumCOPY CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo# 只执行一句RUN,镜像大小从900多M,减少到500多MRUN curl -O http://cdn.npm.taobao.org/dist/node/v6.9.1/node-v6.9.1-linux-x64.tar.gz && tar --strip-components 1 -xzvf node-v* -C /usr/local && node --version && # 配置淘宝源 npm config set registry https://registry.npm.taobao.org && yum clean all && yum makecache && # 安装工具 yum install -y gcc automake autoconf libtool make gcc-c++ # node-canvas的依赖 cairo cairo-devel cairomm-devel libjpeg-turbo-devel pango pango-devel pangomm pangomm-devel giflib-devel # opencv的依赖 opencv opencv-devel && npm install canvas opencv -g --unsafe-perm --verbose && # 移除工具 yum remove -y gcc automake autoconf libtool make gcc-c++ # 移除开发需要的模块,这个操作减少了3M的体积 cairo-devel cairomm-devel libjpeg-turbo-devel pango-devel pangomm-devel giflib-devel opencv-devel && yum clean all && rm -rf node-v6.9.1-linux-x64.tar.gz /usr/share/man /tmp/* /var/cache/yum /usr/local/share/doc /usr/local/share/man /usr/lib/node_modules/npm/man /usr/lib/node_modules/npm/doc /usr/lib/node_modules/npm/html

但是,还是大了300多M:

$ docker images # 省略了一些输出REPOSITORY TAG SIZEopencv-canvas latest 517 MBcentos 7192 MB

那么多出来的是啥呢!我只好进去再看看:

~ docker run -it opencv-canvas~ docker run -it centos:7

放大招,通过du -h | grep '[0-9]M'来看看各个目录的大小,最后发现/user下多了很多,安装后的:

~ du -h | grep '[0-9]M'2.1M ./local/include/node/openssl2.9M ./local/include/node2.9M ./local/include1.1M ./local/lib/node_modules/canvas/build/Release1.1M ./local/lib/node_modules/canvas/build1.9M ./local/lib/node_modules/canvas2.7M ./local/lib/node_modules/opencv/examples/files1.6M ./local/lib/node_modules/opencv/examples/coffeescript4.4M ./local/lib/node_modules/opencv/examples1.5M ./local/lib/node_modules/opencv/node_modules/uglify-js2.4M ./local/lib/node_modules/opencv/node_modules/handlebars/dist2.9M ./local/lib/node_modules/opencv/node_modules/handlebars17M ./local/lib/node_modules/opencv/node_modules1.1M ./local/lib/node_modules/opencv/build/Release/obj.target/opencv/src1.1M ./local/lib/node_modules/opencv/build/Release/obj.target/opencv1.7M ./local/lib/node_modules/opencv/build/Release/obj.target2.4M ./local/lib/node_modules/opencv/build/Release2.9M ./local/lib/node_modules/opencv/build19M ./local/lib/node_modules/opencv/data44M ./local/lib/node_modules/opencv1.1M ./local/lib/node_modules/npm/node_modules/npm-registry-client2.1M ./local/lib/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/es6-symbol/node_modules/es5-ext2.2M ./local/lib/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/es6-symbol/node_modules2.2M ./local/lib/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/es6-symbol2.3M ./local/lib/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules2.4M ./local/lib/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index2.4M ./local/lib/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules2.4M ./local/lib/node_modules/npm/node_modules/node-gyp/node_modules/path-array3.0M ./local/lib/node_modules/npm/node_modules/node-gyp/node_modules1.5M ./local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp1.5M ./local/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib1.9M ./local/lib/node_modules/npm/node_modules/node-gyp/gyp5.1M ./local/lib/node_modules/npm/node_modules/node-gyp1.4M ./local/lib/node_modules/npm/node_modules/request/node_modules/http-signature/node_modules1.5M ./local/lib/node_modules/npm/node_modules/request/node_modules/http-signature4.3M ./local/lib/node_modules/npm/node_modules/request/node_modules4.6M ./local/lib/node_modules/npm/node_modules/request16M ./local/lib/node_modules/npm/node_modules19M ./local/lib/node_modules/npm65M ./local/lib/node_modules65M ./local/lib29M ./local/bin96M ./local4.0M ./include/unicode1.5M ./include/GL2.4M ./include/giomm-2.4/giomm2.4M ./include/giomm-2.41.3M ./include/sigc++-2.0/sigc++1.3M ./include/sigc++-2.01.2M ./include/freetype2/freetype1.2M ./include/freetype21.2M ./include/glibmm-2.4/glibmm1.2M ./include/glibmm-2.42.7M ./include/c++/4.8.2/bits1.5M ./include/c++/4.8.2/ext/pb_ds/detail1.6M ./include/c++/4.8.2/ext/pb_ds2.4M ./include/c++/4.8.2/ext9.0M ./include/c++/4.8.29.0M ./include/c++4.2M ./include/linux1.2M ./include/glib-2.0/gio2.3M ./include/glib-2.02.1M ./include/xcb1.7M ./include/X1137M ./include5.6M ./lib/udev/hwdb.d6.0M ./lib/udev3.4M ./lib/locale8.3M ./lib/systemd2.4M ./lib/python2.7/site-packages/yum1.3M ./lib/python2.7/site-packages/chardet5.0M ./lib/python2.7/site-packages5.0M ./lib/python2.71.1M ./lib/dracut/modules.d1.2M ./lib/dracut25M ./lib2.1M ./lib64/girepository-1.01.3M ./lib64/perl5/auto/Unicode/Collate1.8M ./lib64/perl5/auto/Unicode3.0M ./lib64/perl5/auto2.4M ./lib64/perl5/vendor_perl/auto/Encode/KR2.7M ./lib64/perl5/vendor_perl/auto/Encode/JP2.0M ./lib64/perl5/vendor_perl/auto/Encode/CN2.0M ./lib64/perl5/vendor_perl/auto/Encode/TW9.4M ./lib64/perl5/vendor_perl/auto/Encode10M ./lib64/perl5/vendor_perl/auto12M ./lib64/perl5/vendor_perl1.6M ./lib64/perl5/CORE18M ./lib64/perl52.7M ./lib64/gstreamer-0.101.6M ./lib64/nss/unsupported-tools2.2M ./lib64/nss3.9M ./lib64/python2.7/lib-dynload2.3M ./lib64/python2.7/encodings3.4M ./lib64/python2.7/site-packages1.6M ./lib64/python2.7/distutils1.1M ./lib64/python2.7/lib2to31.9M ./lib64/python2.7/idlelib29M ./lib64/python2.77.3M ./lib64/gconv1.1M ./lib64/security166M ./lib6414M ./libexec/gcc/x86_64-redhat-linux/4.8.214M ./libexec/gcc/x86_64-redhat-linux14M ./libexec/gcc15M ./libexec42M ./bin1.5M ./share/xml/iso-codes1.5M ./share/xml3.8M ./share/perl5/unicore/lib5.8M ./share/perl5/unicore1.7M ./share/perl5/vendor_perl6.7M ./share/perl5/pod1.1M ./share/perl5/Unicode/Collate/Locale3.1M ./share/perl5/Unicode/Collate3.2M ./share/perl5/Unicode21M ./share/perl520M ./share/OpenCV/haarcascades20M ./share/OpenCV6.5M ./share/hwdata1.4M ./share/icons/hicolor1.4M ./share/icons1.1M ./share/groff/1.22.2/font1.9M ./share/groff/1.22.21.9M ./share/groff2.0M ./share/X11/locale2.1M ./share/X111.8M ./share/mime/packages1.5M ./share/mime/application4.8M ./share/mime9.0M ./share/cracklib1.7M ./share/zoneinfo/right1.7M ./share/zoneinfo/posix5.0M ./share/zoneinfo1.1M ./share/pki/ca-trust-source1.2M ./share/pki3.3M ./share/i18n/charmaps6.3M ./share/i18n/locales9.5M ./share/i18n2.8M ./share/misc91M ./share6.9M ./sbin476M .

原来镜像的:

~ du -h | grep '[0-9]M'3.4M ./lib/locale8.3M ./lib/systemd2.4M ./lib/python2.7/site-packages/yum1.3M ./lib/python2.7/site-packages/chardet5.0M ./lib/python2.7/site-packages5.0M ./lib/python2.71.1M ./lib/dracut/modules.d1.2M ./lib/dracut19M ./lib1.6M ./lib64/nss/unsupported-tools2.2M ./lib64/nss3.9M ./lib64/python2.7/lib-dynload2.3M ./lib64/python2.7/encodings3.4M ./lib64/python2.7/site-packages1.6M ./lib64/python2.7/distutils1.1M ./lib64/python2.7/lib2to31.9M ./lib64/python2.7/idlelib29M ./lib64/python2.77.3M ./lib64/gconv1.1M ./lib64/security78M ./lib6438M ./bin6.9M ./sbin1.8M ./share/mime/packages1.5M ./share/mime/application4.8M ./share/mime9.0M ./share/cracklib1.7M ./share/zoneinfo/right1.7M ./share/zoneinfo/posix5.0M ./share/zoneinfo1.1M ./share/pki/ca-trust-source1.2M ./share/pki3.3M ./share/i18n/charmaps6.3M ./share/i18n/locales9.5M ./share/i18n2.8M ./share/misc37M ./share178M .

那么问题来了!

我该删哪些呢~ 那个啥perl5和python可不可以删掉?

问题解答

回答1:

你这centos7 192,debian才99,官方推荐。

相关文章: