Про контейнеры
Как все-таки изменилось понятие "контейнер" по сравнению с самым началом его зарождения :)
Вообще, идея изоляции ресурсов без супервизора не нова. Еще в начале далеких нулевых FreeBSD успешно запустила свои jail-ы и это было очень круто. Со фряхи я начинал свой путь админа и в джейлах было очень удобно запускать всякую дрянь без риска повредить основную ОС. Потом был Solaris со своими Zones, а в 2009 году подтянулся и Linux со своими нативными LXC-контейнерами.
(В линуксе до этого был уродец-chroot, не идеально, но тоже вполне себе изолировал часть ресурсов)
Ну а потом в 2013 начал свое победное шествие Docker и это был реально life-changing moment, мир разделился на до и после. Docker не сделал ничего нового, он просто собрал уже имеющиеся технологии и запаковал их в красивую обертку, сделав очень важный шаг: он положил начало развитию экосистемы, запустив DockerHub
Тренд на Cloud-native уже было не повернуть вспять и вся эта история становилась все красивее и удобнее. В принципе, и сейчас есть люди, которые закидают меня помидорами, но нельзя не признать, что всё, облака плотно закрепились в нашей жизни. А контейнеры стали удобным специализированным средством доставки приложений. Любых. Все стало контейнером. ОС, внешние зависимости, инструменты, базы данных, конечные продукты, все стало можно обернуть в контейнеры. Как классические репозитории пакетов изначально сильно облегчили жизнь и популяризовали UNIX-like OS (некоторые дистрибутивы линукса уже гораздо проще той же винды и в консоль лазить не надо, если не хочется), так и контейнеры перевернули мир deployment&delivery для продуктов, придав облачным окружениям мощный буст.
И все, где-то в этом процессе контейнеры уже потеряли свое первоначальное "лицо", они перестали быть легкими изолированными окружениями.
Появились, например, Kata Containers, которые реализуют CRI для k8s и запускают контейнеры под гипервизором KVM, немного проигрывая в скорости, но дающие бОльший уровень безопасности, делающий почти невозможным побег из контейнера. Появились даже, господи прости, Windows-контейнеры, существующие в двух ипостасях: первая, также, как и kata, работающая под Hyper-V и вторая, умеющая строить изоляцию на уровне виндовых процессов. Как, не спрашивайте, я в это глубоко не погружался :) Реализация от Microsoft даже совместима с докером (но, конечно, надо понимать, что винду на голой линуксовой машины вы в докере не запустите)
Вот так понятие "контейнер" теперь стало более общим и стало обозначать в принципе способ дистрибуции и запуска программных компонентов. На наших глазах вырастает новый слой абстракции. Kubernetes претендует на то, чтобы занять роль операционной системы, абстрагируя фактически любое количество физических нод за собой (есть уже даже успешные кейсы построения гетерогенных кластеров), а контейнеры могут запускаться в этой системе в любых нужных для них ОС.
Post #98
1.13K