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提供的更多的隔离