Что такое…

Что такое 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 для больших компаний), но тебе как новичку всё нужное доступно бесплатно.

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →