Недавно я начал изучать докер, и кажется, что большая часть тяжелой работы выполняется ядром Linux с использованием пространств имен и контрольных групп.
Вот несколько вещей, которые меня смущают:
В чем разница между пространством имен и контрольной группой? Какие варианты использования они адресованы?
Что docker реализовал поверх этого, чтобы завоевать популярность?
Я хотел бы знать внутреннее устройство этих функций и то, как они реализованы.
Ответы:
Правильные ссылки для этих двух понятий были зафиксированы в PR 14307 :
С участием:
Коротко:
См. Дополнительную информацию в статье Жерома Петаццони « Анатомия контейнера: пространства имен, контрольные группы и некоторая магия файловой системы ». .
Cgroups включают измерение и ограничение ресурсов:
Пространства имен предоставляют процессам собственное представление о системе
Несколько пространств имен:
(выполняется переназначение корневого каталога контейнера для каждого экземпляра демона на непривилегированного пользователя: PR 12648 : см. его дизайн )
источник
chroot
основе некоторого пространства имен? Можетchroot
быть заменено каким-нибудь пространством имен?chroot
быть заменено каким-нибудь пространством имен?pivot_root
? ( unix.stackexchange.com/a/456777/7490 ) См. также github.com/vincentbernat/jchrootcgroups ограничивает ресурсы, которые процесс или набор процессов может использовать. Эти ресурсы могут быть ЦП, памятью, сетевым вводом-выводом или доступом к файловой системе, в то время как пространство имен ограничивает видимость группы процессов для остальной части системы.
посетите для получения дополнительной информации Как группы ядра Linux и пространства имен сделали возможными современные контейнеры
источник
Cgroups (группы управления) занимается управлением ресурсами.
Он определяет, сколько ресурсов хост-машины следует отдать контейнерам.
например: - мы определяем ресурсы в файле yaml docker-compose для создания таких сервисов, как:
Здесь, в этом примере, мы явно просим контрольные группы выделить эти ресурсы конкретному контейнеру.
Пространства имен : обеспечивает изоляцию процессов, полную изоляцию контейнеров, отдельную файловую систему.
Существует 6 типов пространств имен:
1. mount ns - для файловой системы.
2. UTS (уникальное разделение времени) ns - который проверяет разные имена хостов запущенных контейнеров
3. IPC ns - межпроцессное взаимодействие
4. Network ns - заботится о различном распределении IP-адресов для разных контейнеров
5. PID ns - изоляция идентификатора процесса
6. пользователь ns- другое имя пользователя (uid)
источник