Різниця між Chroot і Docker


15

Я не розумію різниці між докером і chroot. Так, це приємно з точки зору упаковки реєстру. Але я якось відчуваю, що це просто круто з додатковими дзвіночками.

Я знаю, що мені щось не вистачає. Було б чудово знати, чим вони відрізняються і чи потрібна докер, якби Chroot міг зробити щось подібне.

Я також не міг знайти цього Chroot Vs Docker досить зрозумілим.


Ну так, Docker не робить нічого, що ядро ​​вже не зробить для вас. Він просто пакує його у більш-менш когерентний та досить простий у використанні інструмент. Ви можете створити свій власний Docker, якби вам було непотрібно робити chroot, простори імен, квоти, NAT та все інше.
Гай

Відповіді:


8

Ну а додаткові дзвінки називаються ізоляцією процесу, контейнер отримує власний простір імен з ядра хоста, це означає, що програма в контейнері не може намагатися читати пам'ять ядра або їсти більше оперативної пам'яті, ніж дозволено.

Він також ізолює мережеві стеки, тож два процеси можуть прослуховувати порт 8080 для приклад, вам доведеться обробляти маршрутизацію на рівні хоста, тут немає ніякої магії, але це дозволяє обробляти маршрутизацію в одному місці і уникати зміни конфігурації процесу на слухати вільний порт.

По-друге, chroot все ще читається / записується, будь-яка зміна є постійною, використовуючи контейнер docker aufs, починається з чистої файлової системи щоразу, коли ви запускаєте контейнер (зміни зберігаються, якщо ви зупиняєте / запускаєте його IIRC).

Тож хоча контейнер можна вважати як process namespace+ chroot, реальність трохи складніша.


Зверніть увагу, що aufsвже не використовується за замовчуванням. Тепер цеoverlay2
Віталій Вітренко

Щоправда, але я думаю, що наразі є більше навчальних матеріалів, що посилаються на ауфі, ніж overlay2 :)
Tensibai

Нормальний процес не може прочитати будь-яку пам'ять, якої він також не повинен. Якщо ви для безпеки покладаєтесь на Docker, ви робите це неправильно ...
Гай

@Gaius, ти мене неправильно читаєш, я просто намагаюся дати підказки пошуку в ОП ... Додавання докера в конвеєр доставки з усією свободою, яку він надає розробнику, до того, що вони використовують всередині, абсолютно не є безпекою. Тим не менш, простори імен захищають від сукупності переповнення стека та переповнення буфера.
Тенсібай

5

Так, тут абсолютно більше, ніж chrootдо того, що вони мають майже нічого спільного.

  • Стандартизований формат файлу скриптів, включаючи семантику, що стосується завдання завдання
  • Зображення (включаючи анонімні зображення між ними), кешування, іменування, завантаження тощо, включаючи потужне управління ( docker image prune...)
  • Контейнери (включаючи власні тимчасові файлові системи, іменування, можливість включення docker execдо них тощо)
  • Управління процесами ( docker container ...)
  • Налагодження мережі за допомогою простого варіанту, включаючи внутрішньо-докер-контейнер-мережу тощо.
  • Обсяги (включаючи спеціальні керовані обсяги)
  • docker-compose або роя як низькопрофільні оновлення набагато більше.
  • Великий зоопарк інших рішень на основі докерізованих контейнерів (OpenShift тощо).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.