Speaker
Description
В последнее время при разработке и тестировании приложений достаточно часто обращаются к контейнерам. Это обусловлено тем, что контейнер – это удобный в использовании и легковесный инструмент. Контейнер собирается на основе образа, который является шаблоном будущего контейнера, а также с помощью образа контейнер передается по сети. Размер образов может достигать нескольких гигабайт. Таким образом, если требуется передать по сети приложение, образы контейнеров которого достаточно объемны, либо присутствует физическое ограничение доступной памяти (например, при разработке IoT систем), необходима минимизация размера образа.
Образы контейнеров строятся на основе ядра операционной системы Linux, и вся работа с образами – это инструкции оболочки. Для интерактивной работы с контейнерами они включают в себя инструкции и файлы, с которыми приложение внутри контейнера никогда не работает. Сами приложения, которые будут запущены в контейнере, и их количество заранее известны, поэтому при помощи средств отладки Linux можно понять, какие файлы используются приложениями в контейнере, а какие можно исключить из него. Именно так работает приложение chainsaw.
В данной работе представлены результаты исследования нескольких разных образов Docker контейнеров. Было получено уменьшение в 3 раза для некоторых из образов, а также установлено, что на размер уменьшенного образа существенно влияют используемый базовый образ и язык программирования, на котором написано приложение, работающее внутри контейнера.