为什么Docker容器的图片变得如此庞大,同时在UBUNTU 16.04上倚靠python3.6,Virtualenv,Flask,Gunicorn

在virtualenv python3 -m venv FLSK-ENV中部署烧瓶应用程序

Dockerfile:

  FROM appcontainers/ubuntu:xenial MAINTAINER user <user> RUN apt-get install -y software-properties-common \ && add-apt-repository ppa:jonathonf/python-3.6 -y \ && apt-get update -y \ && apt-get install -y python3.6-minimal python3.6-venv \ && apt-get install -y git \ && apt-get install python-pip -y \ && pip install --upgrade pip \ && pip install gunicorn \ && mkdir -p /home/EZMOVE WORKDIR /home/workdir RUN git clone -b develop --single-branch http://repo RUN ["chmod", "+x", "./prepareenv.sh"] RUN /bin/bash -c "source prepareenv.sh" EXPOSE 5000 

所以上面的dockerfile将从“ appcontainers / ubuntu:xenial ”中取出最小的ubuntu-16.04,并且只会更新和安装所需的软件包,例如:

  1. python3.6 2. git 3. python-pip 4. gunicorn 

然后执行“prepareenv.sh”创buildpython3.6虚拟环境,激活venv,然后使用pip安装requirements.txt,然后暴露端口,gunicorn将服务于Flask应用程序..等等。

但在创build图像时,docker图像大小从70MB增加到550MB。

在安装软件包时,它正在安装其他软件包,如下所示:

  The following additional packages will be installed: binutils build-essential bzip2 cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 gcc-5-base libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6 libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libitm1 liblsan0 libmpc3 libmpfr4 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libquadmath0 libstdc++-5-dev libstdc++6 libtsan0 libubsan0 linux-libc-dev make manpages manpages-dev python python-all python-all-dev python-dev python-minimal python-pkg-resources python-setuptools python-wheel python2.7 python2.7-dev python2.7-minimal Suggested packages: binutils-doc bzip2-doc cpp-doc gcc-5-locales debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc locales libstdc++-5-doc make-doc man-browser python-doc python-tk python-setuptools-doc python2.7-doc binfmt-support The following NEW packages will be installed: binutils build-essential bzip2 cpp cpp-5 dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libitm1 liblsan0 libmpc3 libmpfr4 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7 libpython2.7-dev libpython2.7-minimal libpython2.7-stdlib libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make manpages manpages-dev python python-all python-all-dev python-dev python-minimal python-pip python-pkg-resources python-setuptools python-wheel python2.7 python2.7-dev python2.7-minimal The following packages will be upgraded: gcc-5-base libc6 libstdc++6 3 upgraded, 59 newly installed, 0 to remove and 24 not upgraded. Need to get 76.6 MB of archives. After this operation, 210 MB of additional disk space will be used. 

那么如何减lessDocker镜像大小?

尝试下面的Dockerfile,它将图像的大小降低到255 MB。 “–no-install-recommends”确保只安装所需的软件包,并且“rm -rf / var / lib / apt / lists / *”清除,包括任何索引文件。

 FROM appcontainers/ubuntu:xenial RUN apt-get update \ && apt-get install -y --no-install-recommends software-properties-common \ && add-apt-repository -y ppa:jonathonf/python-3.6 \ && apt-get update \ && apt-get install -y --no-install-recommends python3.6-minimal python3.6-venv \ && apt-get install -y --no-install-recommends git \ && apt-get install -y --no-install-recommends python-pip \ && pip install --upgrade pip \ && pip install gunicorn \ && rm -rf /var/lib/apt/lists/* \ && mkdir -p /home/EZMOVE WORKDIR /home/workdir EXPOSE 5000