![][1]
Сборка образов для Docker на основе базового образа, как правило, предполагает вызов команд в окружении этого базового образа. Например — вызов команды apt-get, которая есть в базовом образе, для установки новых пакетов.
Часто возникает необходимость доустановить в базовую систему некоторый набор утилит, с помощью которых происходит установка или сборка некоторых файлов, которые требуются в итоговом образе. Например, чтобы собрать Go-приложение, надо установить компилятор Go, положить все исходные коды приложения в базовом образе, скомпилировать требуемую программу. Однако в итоговом образе требуется лишь скомпилированная программа без всего набора утилит, который использовался для компиляции этой программы.
Проблема известная: одним из путей её решения может быть сборка вспомогательного образа и перенос файлов из вспомогательного образа в результирующий. Для этого появились [Docker multi-stage builds][2] или [образы-артефакты в dapp][3]. И данный подход идеально решает проблему подобную переносу результатов компиляции исходных кодов в итоговый образ. Однако он не решает все возможные проблемы…
[Читать дальше →][4]
[1]:
https://habrastorage.org/webt/uy/gw/ey/uygweyxouk2t1fg0948fq4mws0w.png
[2]:
https://docs.docker.com/develop/develop-images/multistage-build/
[3]:
https://flant.github.io/dapp/artifact_for_advanced_build.html
[4]:
https://habrahabr.ru/post/352432/?utm_source=habrahabr&utm_medium=rss&utm_campaign=352432#habracut