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-інженера на практичних курсах із менторами та реальними проєктами.
Обрати курс