У меня простой Dockerfile
:
FROM node:4.2.2
EXPOSE 8000
Когда я бегу docker build -t myapp .
, он показывает размер загруженного материала:
Кажется, что это больше 200 МБ, хотя сам NodeJS не превышает 30 МБ. Что еще загружается?
Docker установит гораздо больше, чем само приложение, потому что Docker - это контейнерное решение, а не менеджер пакетов, такой как apt или rpm. Docker следует сравнить с виртуализацией всей системы, такой как Xen, VMWare или VirtualBox. Из документации Docker:
Docker позволяет упаковать приложение со всеми его зависимостями в стандартизированный модуль для разработки программного обеспечения.
Контейнеры Docker включают часть программного обеспечения в полную файловую систему, содержащую все необходимое для запуска: код, среду выполнения, системные инструменты, системные библиотеки - все, что вы можете установить на сервере. Это гарантирует, что он всегда будет работать одинаково, независимо от среды, в которой он работает. источник
FROM node:4.2.2
например, развернет контейнер докеров на основе Debian wheezy, который предоставляет вам базовую среду Debian. И чтобы вы знали, что Docker нужно установить немного больше, чем просто nodejs.
Если вы хотите знать, что именно установлено, вам нужно найти файлы Dockerfile, которые вы включили в свой файл Dockerfile. В таком случае node:4.2.2
. Здесь репозиторий github. Вы можете увидеть там, что еще один Dockercontainer включен buildpack-deps:wheezy
. Если вы посмотрите на это Dockerfile вы можете видеть, что эти пакеты установлены:
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 \
Каждый образ контейнера построен по слоям; если ты бежишь
docker history myapp
вы увидите размер каждого слоя; как говорит другой ответ, большая часть этого, вероятно, находится в debian
слой.