For an overview of namespaces, see namespaces(7).
Mount namespaces provide isolation of the list of mounts seen by
the processes in each namespace instance. Thus, the processes in
each of the mount namespace instances will see distinct single-
directory hierarchies.
The views provided by the /proc/[pid]/mounts,
/proc/[pid]/mountinfo, and /proc/[pid]/mountstats files (all
described in proc(5)) correspond to the mount namespace in which
the process with the PID [pid] resides. (All of the processes
that reside in the same mount namespace will see the same view in
these files.)
A new mount namespace is created using either clone(2) or
unshare(2) with the CLONE_NEWNS
flag. When a new mount namespace
is created, its mount list is initialized as follows:
* If the namespace is created using clone(2), the mount list of
the child's namespace is a copy of the mount list in the
parent process's mount namespace.
* If the namespace is created using unshare(2), the mount list
of the new namespace is a copy of the mount list in the
caller's previous mount namespace.
Subsequent modifications to the mount list (mount(2) and
umount(2)) in either mount namespace will not (by default) affect
the mount list seen in the other namespace (but see the following
discussion of shared subtrees).