Chroot 与 Docker

Chroot vs Docker

我正在尝试学习有关容器的基础知识(在本例中为 Docker)。据我从 Docker 文档和一些阅读材料中了解到,Docker 基本上通过 运行 容器使用 runc (previously using LXC). Either ways it uses the same kernel as the host machine. Thus, the container image needs to be compatible with the host kernel. I find this very similar to what a chroot 提供隔离。有人可以向我解释一下 and/or 使用 Docker 而不是 chroot 的优点吗? (除了 Docker 提供的包装、docker-hub 以及 Docker 提供的所有优秀功能之外)

Docker 允许通过命名空间在多个级别隔离进程:

  • mnt 命名空间提供了一个根文件系统(我猜这可以与 chroot 相提并论)
  • pid 命名空间,因此进程只能看到自己及其子进程
  • 允许容器拥有其专用网络堆栈的网络命名空间
  • 用户命名空间(相当新)允许主机上的非根用户映射到容器内的根用户
  • uts 提供专用主机名
  • ipc提供专用共享内存

所有这些增加了比 chroot 提供的更多的隔离