DEVOPS / КОНТЕЙНЕРЫ
Контейнер — это не маленькая виртуалка
Виртуальная машина запускает гостевую операционную систему со своим ядром. Linux-контейнер обычно запускает изолированные процессы, использующие ядро хоста.
Что находится внутри
Образ содержит файловую систему приложения: исполняемые файлы, библиотеки и нужные зависимости. Контейнер — запущенный экземпляр на основе образа, со своим состоянием и настройками.
Изоляция процессов и ограничения ресурсов решают разные задачи. Сам факт запуска в контейнере не означает, что приложение уже ограничено по памяти или CPU: лимиты нужно задавать отдельно.
Где живут данные
Записываемый слой связан с жизненным циклом контейнера. Для постоянных данных используют тома или монтирование каталогов. Базу данных нельзя считать сохранённой только потому, что её контейнер сейчас работает.
Как выбирать
Контейнеры удобны для воспроизводимой упаковки и доставки приложений. Виртуальные машины дают отдельное ядро и другую границу изоляции. Эти подходы часто используют вместе: несколько контейнеров работают внутри одной виртуальной машины.