Какво се използва вътре в Docker контейнер?
sobes.tech AI
Отговор от AI
Контейнерът Docker използва редица технологии за изолиране на процесите и ресурсите:
-
Namespaces на ядрото на Linux: Осигуряват изолация за различни системни ресурси, като:
- PID (Идентификатор на процес): Изолират процесите.
- Net (Мрежа): Изолират мрежовия стек.
- Mount (mnt): Изолират точките за монтиране на файловата система.
- UTS (Unix Timesharing System): Изолират името на хоста и домейна.
- IPC (Межпроцесна комуникация): Изолират механизмите за межпроцесна комуникация.
- User (Потребителски и групови идентификатори): Изолират идентификаторите на потребителите и групите.
-
Контролни групи (cgroups): Управляват и ограничават използването на хардуерни ресурси за процесите вътре в контейнера, включително:
- CPU: Ограничение на използването на процесорно време.
- Memory: Ограничение на използването на RAM.
- Block I/O: Ограничение на пропускателната способност на дисковия вход/изход.
- Net I/O: Ограничение на пропускателната способност на мрежовия вход/изход.
-
Union файлови системи: Предоставят обединена файлова система, състояща се от няколко слоя. Docker използва такива файлови системи като OverlayFS, AUFS, Btrfs, ZFS. Това позволява ефективно управление на съхранението на образи и създаване на слоеве само за промените.
-
Процесът Docker Daemon: Управлява жизнения цикъл на контейнерите (създаване, стартиране, спиране, изтриване).
-
Контейнерна среда за изпълнение: Ниско ниво изпълнение на контейнера. Docker е използвал и поддържа различни среди за изпълнение, като
runc(спецификация OCI),containerd. -
Образ на контейнера: Комплект от слоеве на файловата система и метаданни, необходими за стартиране на приложението.
-
Приложение: Изпълним код, библиотеки, зависимости и конфигурационни файлове, които съставляват самата програма, работеща вътре в контейнера.
По същество, контейнерът е изолиран процес (или набор от процеси), който работи в ограничена среда, предоставена от ядрото на Linux и управлявана от Docker.