Что такое Docker — и почему «у меня работает» перестаёт быть отмазкой

Знакомая боль: у тебя на ноуте всё работает, ты отправляешь код другу или на сервер — и там падает. «Но у меня же работает!» И вот тут заходит Docker — инструмент, из-за которого эта фраза перестаёт быть отмазкой. Потому что ты отправляешь не только код, а код вместе с его окружением, целиком.
Разберёмся, что это значит и зачем оно тебе — даже если ты пока просто вайб-кодишь по выходным.
Что такое Docker в одной фразе
Docker — это способ упаковать твоё приложение вместе со всем, что ему нужно для запуска, в одну изолированную коробку — контейнер. Внутри: сам код, нужная версия языка, все библиотеки, настройки. Снаружи — только Docker.
Ключевое слово — «вместе со всем». Обычно код зависит от кучи невидимых вещей: у тебя Node 20, а на сервере 18; у тебя стоит библиотека, а у друга нет. Контейнер забирает всё это внутрь себя. Поэтому он запускается одинаково где угодно, где есть Docker — на твоём ноуте, на ноуте друга, на сервере в облаке.
Аналогия: обычный код — это рецепт блюда. Ты отдаёшь рецепт, но у человека другая плита, другая мука, нет половины ингредиентов — блюдо выходит другим. Контейнер — это не рецепт, а готовый обед вместе с плитой внутри. Разогрел — и он ровно такой, каким ты его собрал.
Контейнер — это не виртуалка
Тут все спотыкаются. Кажется, что контейнер — это как виртуальная машина: целый компьютер внутри компьютера. Но нет, и разница важная.
Виртуальная машина тащит внутри себя целую операционную систему — это тяжело, гигабайты, запускается минуту. Контейнер операционную систему не копирует: он берёт ядро твоей системы взаймы и кладёт внутрь только то, что отличается — твоё приложение и его библиотеки.
Поэтому контейнер лёгкий: весит мегабайты, а не гигабайты, и стартует за секунду. На одной машине спокойно живут десятки контейнеров бок о бок, не мешая друг другу. Каждый думает, что он один, но операционка под ними общая.
Зачем это тебе
«Окей, но я собираю мини-сайт на выходных, зачем мне это?» Честный ответ: для первого проекта — может, и незачем. Но вот когда Docker внезапно спасает:
- Деплой. Многие хостинги принимают именно контейнер. Ты собрал коробку локально, убедился, что работает — и та же коробка едет в прод. Никакого «а на сервере другая версия». Это прямо лечит боль из разбора почему работает локально, но не в проде.
- Одинаковая среда в команде. Позвал друга помочь — он не мучается полдня с установкой. Одна команда — и у него ровно твоё окружение.
- Грязные эксперименты. Хочешь попробовать базу данных или странную библиотеку, но не засорять систему? Подними в контейнере, наигрался — снёс. Хост чист.
Контейнер — это по сути соседний способ доставки твоего приложения, рядом с обычным деплоем и serverless. Просто он забирает окружение с собой.
Образ, контейнер, Dockerfile — три слова, которые путают
Ты встретишь три термина, и их постоянно мешают. На пальцах:
- Dockerfile — это рецепт. Текстовый файл, где по шагам написано, как собрать коробку: «возьми Node 20, положи мой код, установи библиотеки, запусти вот эту команду».
- Образ (image) — это собранная по рецепту коробка, запечатанная, на полке. Готовый шаблон, который можно копировать и раздавать.
- Контейнер (container) — это образ, который запустили. Живая, работающая копия. Из одного образа можно поднять хоть десять контейнеров.
Проще так: Dockerfile → (собираешь) → образ → (запускаешь) → контейнер. Рецепт, заготовка, готовое блюдо на столе.
Тебе почти никогда не придётся писать Dockerfile с нуля: под популярные штуки (Next.js, Python, Node) уже есть готовые шаблоны, и ИИ-агент соберёт его под твой проект за минуту, если дать ему контекст о коде. Но понимать, что происходит внутри коробки, стоит — иначе первая же ошибка сборки поставит в тупик.
Docker — это то же самое, что виртуальная машина?
Нет. Виртуалка виртуализирует железо и тащит внутри целую ОС — тяжело и медленно. Docker виртуализирует только окружение приложения и делит ядро с хостом — легко и быстро. Грубо: виртуалка — отдельная квартира со своими стенами, контейнер — своя комната в общей квартире.
Мне точно нужен Docker для пет-проекта?
Скорее всего, нет — для первого сайта хватит обычного хостинга, который сам всё соберёт. Docker становится нужен, когда появляется прод, команда или сложное окружение (своя база, фоновые задачи). Не торопись: узнал, что это — и хорошо, применишь, когда упрёшься.
Docker — это платно?
Сам движок Docker — бесплатный и open source. Платными бывают некоторые надстройки (корпоративные тарифы Docker Desktop для больших компаний), но тебе как новичку всё нужное доступно бесплатно.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





