TGTGInsighttelegram intelligenceLIVE / telegram public index
← Константин про IT
Константин про IT avatar

TGINSIGHT POST

Post #5

@knosorevit

Константин про IT

Прегледи463Број прегледа
Објављено13. феб13.02.2025. 20:59
Садржај

Садржај поста

Недавно я провел лекцию в Deepshool про внутренности Docker и как он работает под капотом. Для подготовки лекций я вновь погрузился в устройство контейнеризации, в частности, в одну из самых глубоких и интересных, как мне кажется, тем — устройство файловой системы и то, что вообще такое контейнер и из чего он состоит. Docker образ можно представить как слоеный пирог, где каждый слой — это те файлы, которые добавились, удалились или изменились в результате выполнения некоторой команды во время сборки. Например, мы собираем образ с котиками. Первой командой мы добавили котика Федю, потом мы решили во время сборки подстричь его, а последним шагом подселить к нему еще одного котика Васю. В результате у нас получился образ, где сидит стриженный Федя и котик Вася. При этом, если залезть глубже и посмотреть, из чего состоит наш образ, то мы увидим, что у нас создалось 3 слоя: 1. Котик Федя и его шерстка. 2. Пометка, что мы удалили шерстку Феди. 3. Котик Вася. Вы можете сложить все изменения и получить результат, но кажется, что Docker мог бы и не сохранять вообще информацию про шерстку Феди. И в целом вы были бы правы: если бы мы просто сохранили результат, то наш образ весил бы меньше и с ним было бы проще работать. Но есть одно “но”. Тут я предлагаю представить, что мы можем собирать/запускать другие контейнеры, например, тот контейнер, где есть только Федя без его шерстки, или же Федя и его другой друг кот Матроскин. В таком случае нам бы пришлось хранить уже не один образ, а целых три — не круто! И тут мы плавно подходим к тому, зачем вообще такое сделано. Используя слоистую архитектуру, Docker может переиспользовать слои и не стричь Федю каждый раз, а сделать это один раз и сохранить результат. Похожим образом работает и запуск контейнеров из образа: Docker не хранит отдельно каждый образ, а сохраняет слои и последовательность их применений для каждого образа, что значительно снижает затраты по памяти. Таким образом, сегодня мы с вами на примере котиков посмотрели на то, как устроены образы Docker. Если вам интересно погрузиться еще глубже, то оставляйте ваши комментарии, и я продолжу раскрывать тему, а также запишу видео!