🔖Контейнер ≠ Docker [1/3]
Представьте: вы проходите собеседование в уважаемую компанию, и вам задают «любимый» вопрос: «А чем отличаются контейнеры от виртуальных машин?»
На самом деле сама постановка вопроса уже говорит о низкой квалификации собеседующего. Почему? Сейчас объясню.
Современные контейнеры давно вышли за рамки исключительно Linux namespaces и cgroups, а официальный стандарт OCI вообще допускает контейнеры на базе виртуальных машин.
Согласно OCI-спецификации: контейнер – это изолированная среда для выполнения процессов с настраиваемыми ограничениями ресурсов и уровнями изоляции. Ключевой момент здесь – среда выполнения, а не сам процесс. То есть контейнер – это не просто “изолированный процесс Linux” как многие думают, а стандартизированная среда запуска.
Но это ещё не всё – OCI допускает контейнеры, построенные поверх виртуализации. В этом случае изоляция достигается не namespaces (cgroups, seccomp, capabilities etc), а гипервизором.
Самая известная реализация VM-контейнеров – Kata Containers. Kata запускает OCI-контейнеры внутри лёгких виртуальных машин.
Как итог это позволяет получить:
- повышенную безопасность;
- изоляцию уровня виртуальных машин;
- относительно быстрый старт – там есть оверхед, но не сильно критичный.
Более того мы можем научить docker cli использовать runtime kata. Снаружи это выглядит как обычный контейнер, а внутри – microVM:
docker run --rm -it --runtime kata --cpus 0.5 ubuntu nproc
Короче: если собеседующий задаёт этот вопрос – бегите. Он застрял в 2015 году и перепутал Docker с религией.
Ну а в следующих частях я расскажу как использовать Kata Containers и Firecracker практике. Покажу как развернуть эту всю историю на сервере и запускать microVM для достижения максимально изоляции.
Если вам интересна эта тема - ставьте 🔥 и всем хорошей пятницы.
---
Telegram | Github | YouTube | Twitter
Представьте: вы проходите собеседование в уважаемую компанию, и вам задают «любимый» вопрос: «А чем отличаются контейнеры от виртуальных машин?»
На самом деле сама постановка вопроса уже говорит о низкой квалификации собеседующего. Почему? Сейчас объясню.
Современные контейнеры давно вышли за рамки исключительно Linux namespaces и cgroups, а официальный стандарт OCI вообще допускает контейнеры на базе виртуальных машин.
Согласно OCI-спецификации: контейнер – это изолированная среда для выполнения процессов с настраиваемыми ограничениями ресурсов и уровнями изоляции. Ключевой момент здесь – среда выполнения, а не сам процесс. То есть контейнер – это не просто “изолированный процесс Linux” как многие думают, а стандартизированная среда запуска.
Но это ещё не всё – OCI допускает контейнеры, построенные поверх виртуализации. В этом случае изоляция достигается не namespaces (cgroups, seccomp, capabilities etc), а гипервизором.
Самая известная реализация VM-контейнеров – Kata Containers. Kata запускает OCI-контейнеры внутри лёгких виртуальных машин.
Как итог это позволяет получить:
- повышенную безопасность;
- изоляцию уровня виртуальных машин;
- относительно быстрый старт – там есть оверхед, но не сильно критичный.
Более того мы можем научить docker cli использовать runtime kata. Снаружи это выглядит как обычный контейнер, а внутри – microVM:
docker run --rm -it --runtime kata --cpus 0.5 ubuntu nproc
Короче: если собеседующий задаёт этот вопрос – бегите. Он застрял в 2015 году и перепутал Docker с религией.
Ну а в следующих частях я расскажу как использовать Kata Containers и Firecracker практике. Покажу как развернуть эту всю историю на сервере и запускать microVM для достижения максимально изоляции.
Если вам интересна эта тема - ставьте 🔥 и всем хорошей пятницы.
---
Telegram | Github | YouTube | Twitter