Chroot 对 Docker

我试图学习有关容器的基本知识(本例中是 Docker)。就我从 Docker 文档和一些读物中了解到的而言,Docker 基本上是通过使用 Runc(以前使用 LXC)运行容器来提供隔离的。无论哪种方式,它都使用与主机相同的内核。因此,容器映像需要与主机内核兼容。我发现这非常类似于 Chroot的功能。有人能给我解释一下使用 Docker 而不是 chroot 有什么区别和/或优势吗?(除了 Docker 提供的额外包装、 Docker-hub 以及 Docker 提供的所有优秀特性之外)

26485 次浏览

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

  • Mnt 名称空间提供了一个根文件系统(我猜这个可以与 chroot 进行比较)
  • Pid 命名空间,因此进程只能看到自己及其子进程
  • 网络命名空间,该命名空间允许容器拥有其专用的网络堆栈
  • User 名称空间(相当新) ,它允许主机上的非 root 用户与容器内的 root 用户映射
  • Ut 提供了专用的主机名
  • Ipc 提供专用的共享内存

所有这些都比 chroot 提供更多的隔离