Чем образ Docker отличается от контейнера?
Основы Docker
Образ — это неизменяемый шаблон с файловой системой и метаданными, а контейнер — запущенный экземпляр образа с собственным слоем для записи.
Аналогия из ООП
- Образ ≈ класс: описание, из которого создают экземпляры.
- Контейнер ≈ объект: живой процесс со своим состоянием.
Что где хранится
- Образ: read-only слои файловой системы, инструкция запуска (ENTRYPOINT/CMD), переменные окружения, порты. Живёт в реестре и локальном кеше.
- Контейнер: тонкий writable-слой поверх образа (copy-on-write), namespace процесса, сетевые настройки, примонтированные volumes.
Практические следствия
- Из одного образа запускают сколько угодно контейнеров: слои образа разделяются, место почти не растёт.
- Удаление контейнера не трогает образ; изменения внутри контейнера пропадут вместе с его слоем, если не сохранить их через volume или
docker commit.
Коротко для собеседования
Образ — это read-only шаблон из слоёв, а контейнер — его запущенный экземпляр с тонким слоем для записи поверх. Всё, что контейнер записал вне volume, исчезнет при его удалении, поэтому данные выносят в volumes, а не надеются на docker commit.