Що таке 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 працює лише на Linux?
Контейнери використовують ядро Linux, але Docker Desktop запускає їх на Windows і macOS через легку віртуальну машину. Для розробника це прозоро: команди ті самі, поведінка збігається. Різниця проявляється лише у продуктивності файлових операцій.
Docker і Kubernetes — це конкуренти?
Ні, вони розвʼязують різні задачі. Docker створює й запускає контейнери, Kubernetes керує множиною контейнерів на групі серверів: розподіляє навантаження, перезапускає впалі, викочує оновлення. Kubernetes працює поверх контейнерів, зазвичай зібраних саме Docker.