Что такое контейнеры и контейнеризация, и чем отличаются?
Детали зависят от операционной системы, на которой выполняется контейнер, но вообще контейнер делит с хостом ядро, пространство памяти ядра, и своё у контейнера только пользовательское окружение. Первая широко распространенная технология контейнеризации в Linux — это OpenVZ, которая потом превратилась в коммерческий продукт Virtuozzo. Мы много работали и работаем с OpenVZ. У нас клиентские окружения жили в контейнерах OpenVZ, пока мы не перешли на более современные технологии.
То есть контейнер от виртуальной машины отличается только тем, что в контейнере общее адресное пространство?
Нет. Виртуальная машина изолируется полностью средствами процессора (технологии Intel, AMD, VMX).
Контейнер работает на ядре хостовой операционной системы и использует для изоляции возможности не железа, а операционной системы, так называемое пространство имён. Если мы говорим о Docker, как о наиболее распространённой сейчас технологии виртуализации, используются так называемые cgroups в ядре Linux.
Контейнер – это продолжение виртуализации? То есть это технология, которая является преемником виртуализации?
Нет. Они ни в коем случае не конкурируют. Они занимают совершенно разные ниши в использовании.
Тогда почему их постоянно сравнивают? И постоянно есть вопрос, что лучше виртуализация или контейнеризация?
С моей точки зрения сравнить контейнеризацию и виртуализацию нельзя. Это сравнение теплого с мягким.