Что такое контейнер
Вопрос
Объясни, что такое контейнер и чем он отличается от виртуальной машины. Какие механизмы Linux лежат в основе?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Контейнер это процесс (или группа) на ядре хоста, а не отдельная ОС
Namespaces изолируют видимость: PID, сеть, ФС, hostname, пользователи
Cgroups ограничивают ресурсы: память, CPU, число процессов
Файловая система из слоёв образа плюс записываемый слой (overlay2, copy-on-write)
ВМ эмулирует железо и запускает своё ядро: изоляция сильнее, старт медленнее, накладные расходы больше
Следствия: общее ядро, быстрый старт, данные в контейнере эфемерны
Что могут спросить следом
- Почему Linux-контейнер не запустится нативно на ядре Windows?
- Что видит процесс в контейнере, если выполнить
ps? - Чем root в контейнере опасен?
Разбор
Контейнер это обычный процесс Linux, которому ядро ограничило обзор и ресурсы. Namespaces дают ему свой вид на систему: свои номера процессов, где он сам PID 1, свои сетевые интерфейсы и порты, своё дерево файловой системы, своё имя хоста, а с user namespace ещё и свои UID. Cgroups ограничивают потребление: память, процессорное время, число процессов. Файловая система собирается из неизменяемых слоёв образа и тонкого записываемого слоя сверху по принципу copy-on-write, драйвер overlay2. Виртуальная машина устроена иначе: гипервизор эмулирует железо, и внутри грузится полноценное гостевое ядро. Поэтому ВМ изолирована сильнее, но стартует дольше и тратит больше памяти. Следствия для контейнеров: старт за доли секунды и высокая плотность, но ядро общее, уязвимость ядра опасна всем, а Linux-контейнеру нужно ядро Linux. И всё, что записано в контейнер без тома, пропадёт вместе с ним.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.