К основному содержимому

Образ 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 после сборки?

Напрямую нет, образ неизменяем после сборки; чтобы внести изменения, нужно собрать новый образ с обновлёнными инструкциями и использовать его вместо старого для новых контейнеров.

Что произойдёт с данными при удалении контейнера?

Все данные в перезаписываемом слое контейнера будут потеряны вместе с ним, поэтому важные данные хранят в подключаемых томах, которые не удаляются вместе с контейнером.

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

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

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