Por que o Docker está baixando muito ao instalar o NodeJS? [fechadas]

1

Eu tenho um simples Dockerfile :

FROM node:4.2.2
EXPOSE 8000

Quando executo docker build -t myapp . , mostra o tamanho das coisas baixadas:

Que parece maior que 200Mb, embora o próprio NodeJS não seja maior que 30Mb. Quais são as outras coisas que estão sendo baixadas?

    
por Sergei Basharov 13.11.2015 / 08:08

2 respostas

5

O Docker instalará muito mais do que o aplicativo em si, porque o Docker é uma solução de contêiner e não um gerenciador de pacotes como apt ou rpm. O Docker deve ser comparado à virtualização de todo o sistema, como Xen, VMWare ou VirtualBox. Da documentação do Docker:

Docker allows you to package an application with all of its dependencies into a standardized unit for software development.

Docker containers wrap up a piece of software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, system libraries – anything you can install on a server. This guarantees that it will always run the same, regardless of the environment it is running in. source

O

FROM node:4.2.2 , por exemplo, implementará um contêiner docker baseado no Debian wheezy, que fornece um ambiente Debian básico. E para dar a você, o Docker precisa instalar um pouco mais do que apenas nodejs.

Se você quer saber exatamente o que está instalado, você precisa procurar os Dockerfiles que você incluiu no seu Dockerfile. Nesse caso, node:4.2.2 . Aqui está o repositório do github . Você pode ver que outro Dockercontainer está incluído buildpack-deps:wheezy . Se você olhar para o Dockerfile , verá que esses pacotes estão instalados:

    autoconf \
    automake \
    bzip2 \
    file \
    g++ \
    gcc \
    imagemagick \
    libbz2-dev \
    libc6-dev \
    libcurl4-openssl-dev \
    libevent-dev \
    libffi-dev \
    libgeoip-dev \
    libglib2.0-dev \
    libjpeg-dev \
    liblzma-dev \
    libmagickcore-dev \
    libmagickwand-dev \
    libmysqlclient-dev \
    libncurses-dev \
    libpng-dev \
    libpq-dev \
    libreadline-dev \
    libsqlite3-dev \
    libssl-dev \
    libtool \
    libwebp-dev \
    libxml2-dev \
    libxslt-dev \
    libyaml-dev \
    make \
    patch \
    xz-utils \
    zlib1g-dev \
    
por 13.11.2015 / 09:03
0

Cada imagem do contêiner é construída em camadas; se você correr

docker history myapp

você verá o tamanho de cada camada; como a outra resposta diz, a maior parte provavelmente está na camada debian .

    
por 14.11.2015 / 18:57