Prog Academy
RU UA
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 працює лише на Linux?

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

Docker і Kubernetes — це конкуренти?

Ні, вони розвʼязують різні задачі. Docker створює й запускає контейнери, Kubernetes керує множиною контейнерів на групі серверів: розподіляє навантаження, перезапускає впалі, викочує оновлення. Kubernetes працює поверх контейнерів, зазвичай зібраних саме Docker.

Повʼязані терміни