Een namespace isoleert een systeemresource zodat processen in verschillende namespaces een eigen, gescheiden weergave van die resource hebben. Namespaces zijn de basis van Linux-containers.
| Namespace | Isoleert |
|---|---|
| PID | Processen — PID 1 in een container is niet PID 1 op de host |
| Network | Netwerkinterfaces, routing, firewallregels |
| Mount | Bestandssysteemkoppelingen |
| UTS | Hostnaam en domeinnaam |
| User | Gebruikers- en groep-IDs |
| IPC | Gedeeld geheugen en berichtenwachtrijen |
| Cgroup | Zichtbaarheid van cgroup-hiërarchie |
lsns # alle namespaces tonen
lsns -t net # alleen netwerk-namespaces
ls -la /proc/1/ns/ # namespaces van PID 1
unshare --net --pid --fork bash # nieuwe netwerk- en PID-namespace
ip link # ziet alleen lo — volledig geïsoleerd
Een container is een combinatie van namespaces (isolatie) + cgroups (resourcelimieten). Docker en podman maken bij elke container een set nieuwe namespaces aan.