Слово контейнер відноситься до легкої технології віртуалізації, доступної на сучасних ядрах Linux, ця технологія дуже схожа на в'язниці FreeBSD.
Старіше ядро Linux, яке не вміщує контейнери, здатне одночасно запускати процеси. Деякі атрибути системи є приватними для обробки, як-от середовище процесу або пам'ять процесу: лише процес, що володіє цими атрибутами, і сама операційна система можуть отримати доступ до цих даних. (Є багато лазівки, як деякі реалізації ps , але це, по суті, правда!) Деякі інші атрибути поділяються між процесами, наприклад, наприклад, файлова система та мережеві інтерфейси.
Сучасне ядро Linux, здатне працювати з контейнерами, здатне обробляти більше атрибутів системи як приватних даних, пов'язаних з процесом або групою процесів. Отриманий контекст є контейнером, і замість запуску програми у "початкових контейнерах" за допомогою файлової системи та мережевих інтерфейсів, ініціалізованих операційною системою, можна запускати процеси в інших контейнерах, щоб вони бачили іншу файлову систему та різний перелік мережевих інтерфейсів. Тому два процеси, що працюють у різних контейнерах, дійсно ділять ядро. Ви, можливо, вам знайомі з командою chroot, яка може запустити процес у різній ієрархії файлів, контейнери пройдуть ідею на кілька кроків далі.
Звичайно, це лише дуже грубе пояснення, але я сподіваюся, що це допоможе з’ясувати уявлення про те, що таке контейнери. Тепер, для чого вони гарні?
Популярний інтерфейс до можливостей контейнерів ядер Linux реалізований докер - утилітою командного рядка, яка може використовуватися для створення артефактів, що представляють файлові системи ( зображення докера ), та запускає процеси в контейнерах, де ці файлові системи доступні. Цей програмний набір також може створити спеціальні віртуальні мережі для того, щоб кілька контейнерів могли спілкуватися в приватній мережі.
Технології на основі контейнерів зручні для:
- Опишіть масштабовані складні розгортання.
- Забезпечити розробників додатків середовищем, дуже схожим на виробниче середовище.
- Реалізуйте незмінний шаблон сервера, оскільки артефакти програмного забезпечення зазвичай описують повну операційну систему, а не лише пакет програм.
(Як вам здається, знайомі з іншими технологіями віртуалізації, такими як Virtual Box, ви можете зауважити, що ці технології також можуть зручно вирішувати три вищезазначені пункти. На сьогоднішній день існує досить малий спектр технологій віртуалізації, і ми можемо порівняти питання про їх популярність у певний контекст з популярністю комп'ютерних мов: це, мабуть, залежить від технічних достоїнств кожного окремого рішення, а також від багатьох факторів, які я просто позначу «випадковістю».)