40 lines
4.0 KiB
Markdown
40 lines
4.0 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
tags:
|
|||
|
- maturity/🌱
|
|||
|
date:
|
|||
|
- - 2024-03-20
|
|||
|
zero-link:
|
|||
|
- "[[../../meta/zero/00 Linux|00 Linux]]"
|
|||
|
parents:
|
|||
|
- "[[Контейнерная виртуализация]]"
|
|||
|
linked:
|
|||
|
---
|
|||
|
Namespaces в Linux – это функция ядра, которая ограничивает видимость и доступность ресурсов процессам. Каждый namespace инкапсулирует определенный аспект системы, позволяя процессам работать в изолированной среде, как если бы они были единственными процессами в системе.
|
|||
|
|
|||
|
Это ключевая технология для реализации контейнеров, таких как [[../../meta/zero/00 Docker|Docker]] и LXC, поскольку она позволяет каждому контейнеру иметь собственные сетевые интерфейсы, файловые системы, идентификаторы пользователей и процессов, не влияя на остальную часть системы.
|
|||
|
|
|||
|
Linux поддерживает несколько типов namespaces:
|
|||
|
1. **PID (Process ID) namespaces**: Изолируют пространство идентификаторов процессов. Это означает, что процессы в разных PID namespaces могут иметь одинаковые PID, но будут рассматриваться как разные процессы внутри их namespaces.
|
|||
|
2. **Network namespaces**: Изолируют сетевые интерфейсы, таблицы маршрутизации, firewall правила, и прочие сетевые ресурсы. Это позволяет каждому namespace иметь собственный набор виртуальных сетевых интерфейсов и свою собственную сетевую конфигурацию.
|
|||
|
3. **Mount namespaces**: Изолируют точки монтирования файловых систем. Это позволяет процессам в разных mount namespaces видеть разные файловые системы, что обеспечивает дополнительный уровень изоляции файлов и директорий.
|
|||
|
4. **IPC (Inter-Process Communication) namespaces**: Изолируют IPC ресурсы, такие как очереди сообщений, разделяемые память и семафоры, позволяя процессам в разных IPC namespaces иметь раздельные IPC ресурсы.
|
|||
|
5. **UTS (UNIX Time-sharing System) namespaces**: Позволяют иметь изолированные имена узлов и доменные имена. Это означает, что каждый UTS namespace может иметь свое собственное имя хоста и NIS доменное имя.
|
|||
|
6. **User namespaces**: Изолируют идентификаторы пользователей и групп. В таком namespace, процесс может иметь привилегии root внутри namespace, не имея их за его пределами.
|
|||
|
|
|||
|
Чтобы увидеть namespaces нужно в папке `/proc/*/ns` вызвать команду `sudo ls -la`
|
|||
|
***
|
|||
|
## Мета информация
|
|||
|
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
|||
|
**Родитель**:: [[Контейнерная виртуализация]]
|
|||
|
**Источник**::
|
|||
|
**Автор**::
|
|||
|
**Создана**:: [[2024-03-20]]
|
|||
|
### Дополнительные материалы
|
|||
|
- [Разделяй и властвуй. Изоляция процессов в Linux / Хабр](https://habr.com/ru/companies/otus/articles/673960/)
|
|||
|
### Дочерние заметки
|
|||
|
```dataview
|
|||
|
LIST
|
|||
|
FROM [[]]
|
|||
|
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)
|
|||
|
```
|