Chroot vs Docker
我正在尝试学习有关容器的基础知识(在这种情况下是Docker)。 据我从Docker文档和几个读数了解,Docker基本上通过使用runc运行容器(以前使用LXC )来提供隔离。 无论哪种方式,它使用与主机相同的内核。 因此,容器映像需要与主机内核兼容。 我发现这与chroot非常类似。 有人可以向我解释使用Docker而不是chroot的区别和优势吗? (除了Docker提供的作为包装,docker-hub以及Docker提供的所有漂亮function)
Docker允许通过命名空间来隔离多个级别的进程:
- mnt命名空间提供了一个根文件系统(这个可以和我猜测的chroot比较)
- pid命名空间,所以进程只能看到自己和subprocess
- networking名称空间允许容器拥有专用的networking堆栈
- 用户命名空间(非常新),它允许主机上的非root用户映射到容器内的根用户
- uts提供专用主机名
- ipc提供专用的共享内存
所有这些增加了比chroot提供的更多的隔离