I've been using Docker for a while and I'm interested in learning its internals. I've read about kernel namespaces it uses. But I don't understand how they are used.

So my problem is: I haven't found any official Linux kernel documentation about it. I haven't found any official source covering subcategories either (PID, IPC, Network).

What I found is the following page: https://www.kernel.org/doc/Documentation/namespaces/


1 Answer 1


The closest thing to official documentation for namespaces is the namespaces(7) manpage and related pages. These are maintained by kernel developers.

The best introduction to containers’ use of namespaces I know of is Matt Turner’s “Istio — the packet’s eye view” presentation (which also exists as a lengthier workshop).

LWN’s series on namespaces is also a good introduction (and more).

  • I've a few more questions (Sorry for my English). Are there any alternative to kernel namespaces that more well documented?. Is it possible to implement all of the kernel namespaces isolation types on application level?. If these are not possible can i build custom isolation module for kernel and use it? How hard would it be? (i don't want it for work or production, just for experimenting things) Sep 9, 2019 at 20:45
  • 1
    Your English is perfectly understandable ;-). There are no alternatives to namespaces. I don’t think you could implement a general isolation module, because you’d need hooks in places where a module can’t reach... Some things could perhaps be implemented as a Linux security module (SELinux etc.), but that’s rather different from namespaces. Sep 10, 2019 at 8:47
  • Meanwhile, i've researched for linux kernel source a bit and new questions has appeared. Suppose that i'm a new developer and want to contribute to the linux kernel development(for kernel namespaces), how can i achieve it, there isn't any official documentation about where can i find its source directory or how to understand code? How can i know where is different parts of kernel codes in kernel source code? Thanks in advance. Sep 10, 2019 at 22:28
  • 1
    That's a huge question. Generally, you have to read the code and understand it. You have to know how to use Git, make, know C well, be able to quickly jump to functions definition and find all places where they are called, use some tools that work better than grep when searching for strings in a huge codebase such as ack or ag, know how to use a mailing list. You can start from reading Documentation/process/howto.rst and kernelnewbies.org. Sep 11, 2019 at 14:02
  • @ArkadiuszDrabczyk, Thanks for the info. Sep 11, 2019 at 23:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .