До основного вмісту

Образ Docker і контейнер: у чому різниця

Хмара та DevOps · 13.10.2026 · 4 хв читання
Ілюстрація до статті «Образ Docker і контейнер: у чому різниця»

Образ Docker — незмінний шаблон із файловою системою застосунку та його залежностями. Контейнер — працюючий екземпляр цього образу, у якого є власний процес, мережа і шар для запису змін. Один образ можна запустити як контейнер будь-яку кількість разів, і кожен запуск отримає незалежний стан. Така модель шарів економить місце на диску, тому що спільні базові шари, наприклад базовий образ операційної системи, не дублюються для кожного окремого образу застосунку.

Чим образ відрізняється від контейнера

Образ Docker збирається шарами: кожна інструкція збірки додає свій шар поверх попереднього, а готові шари повторно використовуються між образами. Контейнер додає поверх образу ще один, перезаписуваний шар, куди потрапляють будь-які зміни під час роботи — нові файли, змінені налаштування, тимчасові дані.

  • образ зберігається на диску і в реєстрі, контейнер існує, поки запущений його процес
  • один образ може бути запущений як декілька незалежних контейнерів одночасно
  • видалення контейнера не чіпає образ, з якого він був створений

Встановлення і базове налаштування Docker на власному сервері описані у статті налаштування Docker на VDS.

Порівняння за практичними параметрами

ПараметрОбразКонтейнер
Змінюваністьнезмінний після збіркизмінюється під час роботи
Зберіганнядиск сервера або реєстр образівіснує, поки живий процес
Станне має станузберігає стан у своєму шарі
Кількість екземпляріводин образ — джерело для багатьох контейнерівкожен контейнер незалежний від сусідніх

Запуск декількох пов'язаних контейнерів із декількох образів однією командою описаний у статті налаштування Docker Compose.

Як це виглядає в команді

Створити контейнер з образу і одразу його запустити можна однією командою.

docker run --name web -d nginx:latest

Команда шукає образ nginx із тегом latest, за потреби завантажує його з реєстру і створює новий контейнер з іменем web. Один і той самий образ nginx:latest можна використовувати для запуску скільки завгодно контейнерів з різними іменами, і вони не впливатимуть один на одного.

Що варто враховувати під час оновлення

Оновлення застосунку в Docker означає збірку нового образу, а не зміну працюючого контейнера напряму: будь-які ручні правки всередині контейнера зникнуть під час його перестворення, тому що вони живуть у перезаписуваному шарі, а не в образі.

Перенесення застосунку на новий сервер або зміна версії образу простіше, коли конфігурація і дані винесені за межі контейнера — у змінні середовища і підключені томи. Порядок перенесення контейнерів між серверами детально описаний у статті міграція Docker-контейнерів.

Окремий тег для кожної збірки образу — не формальність: без нього новий образ може непомітно затерти старий з такою самою назвою, а відкат до робочої версії перетвориться на пошук в історії збірок замість однієї команди. Тег варто прив'язувати до версії застосунку або до номера збірки в системі CI, а не залишати значення за замовчуванням на продакшн-сервері, де важлива передбачуваність кожного розгортання.

Що робити під час оновлення образу

Оновлення варто проводити за одним і тим самим порядком кроків, щоб не втратити дані.

  1. зберіть новий образ з оновленим застосунком під окремим тегом
  2. переконайтеся, що дані і налаштування винесені з контейнера в томи і змінні середовища
  3. зупиніть і видаліть старий контейнер, не чіпаючи образ, з якого він був створений
  4. запустіть новий контейнер з оновленого образу і перевірте його роботу

Старий образ варто залишити на диску до підтвердження, що новий контейнер працює коректно, — відкат тоді зводиться до повторного запуску контейнера зі старого образу. Такий порядок знижує ризик простою під час оновлення і спрощує діагностику та пошук причини, якщо нова версія поведеться не так, як очікувалося.

Часті питання

Чи можна змінити образ Docker після збірки?

Напряму ні, образ незмінний після збірки; щоб внести зміни, потрібно зібрати новий образ з оновленими інструкціями і використовувати його замість старого для нових контейнерів.

Що станеться з даними під час видалення контейнера?

Усі дані в перезаписуваному шарі контейнера будуть втрачені разом із ним, тому важливі дані зберігають у підключених томах, які не видаляються разом із контейнером.

Скільки контейнерів можна запустити з одного образу?

Скільки завгодно: образ — це лише шаблон, а кожен запущений з нього контейнер отримує власний перезаписуваний шар і працює незалежно від інших.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці