Phone icon Связаться с нами

DevOps и облака

Что такое Docker?

Docker — это инструмент, который упаковывает приложение вместе со всем необходимым — кодом, зависимостями, настройками — в контейнер. Такой контейнер одинаково запускается на компьютере разработчика, на тестовом сервере и в продакшене.

Docker решает известную проблему «а у меня локально всё работает». Инструкцию сборки записывают в файл Dockerfile, из него создают образ, а из образа — любое количество одинаковых контейнеров.

Польза видна сразу: новый разработчик запускает проект одной командой вместо дня настроек, тестовая среда точно соответствует рабочей, а обновление сводится к запуску нового образа. Чтобы локально работать с несколькими сервисами, используют Docker Compose.

Где применяется

Разработчик описывает среду в файле, и тот же образ запускается на ноутбуке, на тестовом стенде и на рабочем сервере — с одинаковыми версиями языка, библиотек и системных пакетов.

Поэтому Docker используют везде: в контейнерах работают веб-сервисы, базы данных для локальной разработки, агенты сборки в CI, инструменты тестирования. Для новичка это ещё и простой способ запустить PostgreSQL или Redis одной командой, не устанавливая их в систему и не разбираясь с настройками.

Пример

В команду приходит новый разработчик. Вместо дня установки нужных версий языка, базы и очереди он клонирует репозиторий и выполняет одну команду — за несколько минут у него работает та же среда, что и у всей команды.

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
Dockerfile: базовый образ, установка зависимостей, копирование кода и команда запуска.

Частые вопросы

Чем образ отличается от контейнера?

Образ — неизменный шаблон, собранный по описанию: файлы приложения и команда запуска. Контейнер — рабочий экземпляр, созданный из образа. Из одного образа можно запустить сколько угодно контейнеров, и каждый работает отдельно.

Нужен ли Docker обычному разработчику?

Да, это давно базовый навык, а не только инструмент DevOps. Даже если вы не настраиваете серверы, Docker нужен, чтобы запустить локальную среду, базу для тестов и собрать проект так же, как это делает конвейер CI.

Работает ли Docker только на Linux?

Контейнеры используют ядро Linux, но Docker Desktop запускает их на Windows и macOS через лёгкую виртуальную машину. Для разработчика разницы почти нет: команды те же, поведение одинаковое. Отличается разве что скорость работы с файлами.

Docker и Kubernetes — это конкуренты?

Нет, они решают разные задачи. Docker создаёт и запускает контейнеры, а Kubernetes управляет множеством контейнеров на группе серверов: распределяет нагрузку, перезапускает упавшие, выпускает обновления. Kubernetes работает с контейнерами, которые обычно собраны в Docker.

Обучение DevOps в OWU

Освойте профессию DevOps-инженера на практических курсах с менторами и реальными проектами.

Выбрать курс