[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-docker-chem-otlichaetsya-konteyner-ot-obraza":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":18,"progress":19,"seo":20},725,"chem-otlichaetsya-konteyner-ot-obraza",17,"docker","Docker","🐳","Чем отличается контейнер от образа?","Образ — это неизменяемый шаблон (набор read-only слоёв), а контейнер — запущенный экземпляр этого образа с добавленным записываемым слоем и собственным состоянием.\n\n> Аналогия для Java-разработчиков: образ — это класс, контейнер — это объект (экземпляр класса). Из одного класса можно создать множество объектов, из одного образа — множество контейнеров.\n\n| Характеристика | Образ (Image) | Контейнер (Container) |\n|---|---|---|\n| Аналогия в Java | Класс | Объект (экземпляр класса) |\n| Изменяемость | Неизменяемый (immutable) | Изменяемый (имеет writable layer) |\n| Хранение | На диске в реестре или локально | Запущенный или остановленный процесс |\n| Создание | `docker build` \u002F `docker pull` | `docker run` \u002F `docker create` |\n| Количество | Один образ | Множество контейнеров из одного образа |\n| Состояние | Нет (шаблон) | Есть (running, stopped, paused) |\n\nОбраз — это набор неизменяемых слоёв (read-only layers), представляющих файловую систему, метаданные и инструкции для запуска. Образ не потребляет CPU и не имеет состояния.\n\nКонтейнер — это запущенный экземпляр образа. При создании контейнера Docker добавляет тонкий записываемый слой (writable\u002Fcontainer layer) поверх слоёв образа. Все изменения в файловой системе (создание, изменение, удаление файлов) записываются в этот слой.\n\n```\nКонтейнер = Образ (read-only) + Writable Layer + Конфигурация (сети, тома, переменные)\n```\n\nИз одного образа можно запустить множество контейнеров, и каждый будет иметь свой независимый writable layer:\n\n```bash\ndocker run -d --name app1 my-spring-app\ndocker run -d --name app2 my-spring-app\ndocker run -d --name app3 my-spring-app\n# Три независимых контейнера из одного образа\n```\n\nПри удалении контейнера (`docker rm`) writable layer удаляется. Данные, которые нужно сохранить, следует хранить в томах (volumes).\n\n> **На собеседовании:** используйте аналогию класс\u002Fобъект — она понятна любому Java-разработчику. Ключевое: образ неизменяемый (read-only слои), контейнер добавляет writable layer. При удалении контейнера writable layer теряется, поэтому для персистентных данных нужны volumes.","","junior",[15,16,17,7],"container","image","основы",[],null,{"title":21,"description":22,"ogTitle":21,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"Контейнер vs образ в Docker — Gymterview","Отличие контейнера от образа: образ — неизменяемый шаблон (класс), контейнер — запущенный экземпляр (объект) с writable layer. Таблица сравнения и аналогия.","Образ — класс (immutable шаблон), контейнер — объект (экземпляр с writable layer). Сравнение, создание и жизненный цикл.",[25,26,27,28,29,30,31,32,33],"контейнер vs образ","Docker image","Docker container","writable layer","read-only layers","docker run","docker build","Java аналогия класс объект","собеседование","Образ — неизменяемый шаблон (набор read-only слоёв), контейнер — запущенный экземпляр образа с writable layer. Аналогия для Java: образ — класс, контейнер — объект. Из одного образа можно создать множество контейнеров. Образ создаётся через docker build\u002Fpull, контейнер — через docker run. При удалении контейнера writable layer теряется, данные нужно хранить в volumes.",true]