Namespaces are a feature of the Linux kernel that partition kernel resources such that one set of processes sees one set of resources, while another set of processes sees a different set of resources.
- user namespace has its own set of user IDs and group IDs for assignment to processes. In particular, this means that a process can have
root
privilege within its user namespace without having it in other user namespaces. - process ID (PID) namespace assigns a set of PIDs to processes that are independent of the set of PIDs in other namespaces. The first process created in a new namespace has PID 1 and child processes are assigned subsequent PIDs. If a child process is created with its own PID namespace, it has PID 1 in that namespace as well as its PID in the parent process’ namespace.
- network namespace has an independent network stack: its own private routing table, set of IP addresses, socket listing, connection tracking table, firewall, and other network‑related resources.
- mount namespace has an independent list of mount points seen by the processes in the namespace. This means that you can mount and unmount filesystems in a mount namespace without affecting the host filesystem.
- interprocess communication (IPC) namespace has its own IPC resources, for example POSIX message queues.
- UNIX Time‑Sharing (UTS) namespace allows a single system to appear to have different host and domain names to different processes.