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"]
Частые вопросы
Чем образ отличается от контейнера?
Образ — неизменный шаблон, собранный по описанию: файлы приложения и команда запуска. Контейнер — рабочий экземпляр, созданный из образа. Из одного образа можно запустить сколько угодно контейнеров, и каждый работает отдельно.
Нужен ли Docker обычному разработчику?
Да, это давно базовый навык, а не только инструмент DevOps. Даже если вы не настраиваете серверы, Docker нужен, чтобы запустить локальную среду, базу для тестов и собрать проект так же, как это делает конвейер CI.
Работает ли Docker только на Linux?
Контейнеры используют ядро Linux, но Docker Desktop запускает их на Windows и macOS через лёгкую виртуальную машину. Для разработчика разницы почти нет: команды те же, поведение одинаковое. Отличается разве что скорость работы с файлами.
Docker и Kubernetes — это конкуренты?
Нет, они решают разные задачи. Docker создаёт и запускает контейнеры, а Kubernetes управляет множеством контейнеров на группе серверов: распределяет нагрузку, перезапускает упавшие, выпускает обновления. Kubernetes работает с контейнерами, которые обычно собраны в Docker.
Обучение DevOps в OWU
Освойте профессию DevOps-инженера на практических курсах с менторами и реальными проектами.
Выбрать курс