strip-docker-image, 将 Docker 图像连接到它的最小最小尺寸的实用工具

分享于 

4分钟阅读

GitHub

  繁體 雙語
Utility to strip Docker images to their bare minimum size.
  • 源代码名称:strip-docker-image
  • 源代码网址:http://www.github.com/mvanholsteijn/strip-docker-image
  • strip-docker-image源代码文档
  • strip-docker-image源代码下载
  • Git URL:
    git://www.github.com/mvanholsteijn/strip-docker-image.git
    Git Clone代码到本地:
    git clone http://www.github.com/mvanholsteijn/strip-docker-image
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/mvanholsteijn/strip-docker-image
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    最小化标准 Docker 图像的大小

    这个实用工具将所有不需要的东西从图像中剥离出来,并创建一个新的。

    概要

    
    strip-docker-image -i image-name
    
    
     -t target-image-name
    
    
     [-p package]
    
    
     [-f file]
    
    
     [-x expose-port]
    
    
     [-v]
    
    
    
    

    命令行选项

    
    -i image-name to strip
    
    
    -t target-image-name the image name of the stripped image
    
    
    -p package package to include from image, multiple -p allowed.
    
    
    -f file file to include from image, multiple -f allowed.
    
    
    -x port to expose.
    
    
    -v verbose.
    
    
    
    

    描述

    创建一个新的Docker 映像,它只包含来自源映像的选定软件包和文件。

    为什么这是有用的?

    • 它可以最小化 Docker 图像的大小,从而加快加载时间
    • 它最小化了攻击表面: 如果你进入容器里面什么也没有。

    示例

    下面的示例将 Nginx 安装从默认的Nginx Docker 映像中剥离,

    
    strip-docker-image -i nginx -t stripped-nginx 
    
    
     -x 80 
    
    
     -p nginx 
    
    
     -f/etc/passwd 
    
    
     -f/etc/group 
    
    
     -f '/lib/*/libnss*' 
    
    
     -f/bin/ls 
    
    
     -f/bin/cat 
    
    
     -f/bin/sh 
    
    
     -f/bin/mkdir 
    
    
     -f/bin/ps 
    
    
     -f/var/run 
    
    
     -f/var/log/nginx 
    
    
     -f/var/cache/nginx
    
    
    
    

    除了 Nginx 包,我还添加了/etc/passwd,/etc/group 和/lib//libnss 共享库是 getpwnam() 能够正常工作所必需的。

    Nginx 操作需要目录/var/run,/var/log/nginx 和/var/cache/nginx。

    另外,我添加了/bin/sh 和一些方便的实用程序,只是为了能够搜索一些。

    被剥离的图像现在缩小到了原始 132.8 Mb的一个令人难以置信的5.4 %,仅仅是 7.3 Mb !

    
    $ docker images | grep nginx
    
    
    stripped-nginx latest d61912afaf16 21 seconds ago 7.297 MB
    
    
    nginx 1 319d2015d149 12 days ago 132.8 MB
    
    
    nginx 1.9 319d2015d149 12 days ago 132.8 MB
    
    
    nginx 1.9.2 319d2015d149 12 days ago 132.8 MB
    
    
    
    

    像往常一样运行 Nginx 容器 !

    
    docker run --name nginx -P -d --entrypoint/usr/sbin/nginx stripped-nginx -g"daemon off;"
    
    
    docker run --link nginx:stripped cargonauts/toolbox-networking curl -s -D - http://stripped
    
    
    
    

    警告

    这个工具需要 bash。tar。readlink。ldd,或者在容器中安装dpkg或者 rpm。

    在使用rpm的系统上,你必须在使用 -p switch。比如 -p nginx-1.8.0-1.el7.ngx.x86_64 时指定完整的包名


    图像  DOC  str  images  UTIL  Docker