ENIGMA AI
ENIGMA AI

Что такое Docker и как он работает?

встречается 50× Docker junior devops

Как ответить

Docker — это инструмент для упаковки приложения и всех его зависимостей в изолированный образ, который одинаково запускается на любой Linux-машине. В отличие от виртуальных машин, Docker не эмулирует «железо» и не запускает отдельную ОС. Он использует ядро хостовой системы, изолируя процессы на уровне софта с помощью механизмов ядра Linux.

В основе работы лежат три технологии ядра: namespaces (изолируют то, что процесс «видит»: сеть, файловую систему, пользователей), cgroups (ограничивают ресурсы: сколько памяти или CPU может забрать контейнер) и Union File System (позволяет наслаивать изменения файловой системы друг на друга).

Процесс работы выглядит так:

  • Dockerfile: текстовый файл с инструкциями по сборке. Каждая команда (RUN, COPY) создает новый слой.
  • Image (Образ): неизменяемый шаблон, состоящий из этих слоев. Он хранится в реестре (например, Docker Hub).
  • Container (Контейнер): запущенный экземпляр образа. К слоям образа сверху добавляется тонкий «слой записи» (writable layer), куда приложение пишет логи или временные файлы.

Пример простого Dockerfile для Node.js приложения:

FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Здесь важно использовать -slim версии образов, чтобы уменьшить размер с 1 ГБ до 150-200 МБ, и разделять COPY для package.json, чтобы Docker кешировал установку зависимостей и не пересобирал их при каждом изменении кода.

Главный плюс для разработчика — решение проблемы «у меня на компьютере работает, а на сервере нет». Контейнер несет в себе нужную версию системных библиотек, python-пакетов или бинарных файлов, поэтому окружение везде идентично.

Ключевые тезисы

  • Изоляция через namespaces и cgroups вместо эмуляции железа
  • Отличие контейнера (процесс) от образа (шаблон/слепок)
  • Слойность файловой системы и механизм кеширования при сборке
  • Использование общего ядра хостовой ОС для экономии ресурсов

Что спросят дальше

  • — В чем разница между инструкциями COPY и ADD в Dockerfile?
  • — Как обеспечить сохранение данных (базы данных) при перезапуске контейнера?
  • — Зачем нужны multi-stage builds и как они помогают оптимизировать размер образа?

Готовьтесь к собеседованию с ENIGMA AI

AI-суфлёр подсказывает ответы прямо на собеседовании в реальном времени — незаметно для интервьюера.

Скачать приложение