man*_*ain 1 virtual-machine docker
左边是我从这个视频中得到的一个虚拟机和丰富的 Docker :
Docker 引擎如何能如此轻巧,以至于它可以取代客户操作系统和管理程序,并且仍然可以与主机操作系统一起工作?本质上,它只是比虚拟机更有效地转换不同的应用程序及其依赖项?我听说 Docker 引擎使用与主机操作系统相同的内核,但我不确定我是否理解这意味着什么。本质上,我们用一个 Docker 引擎替换了来自多个客户操作系统和管理程序的所有依赖项,但我不明白如何做到这一点。Docker 引擎是否只是删除了访客操作系统本来就不应该拥有的那么多无关紧要的东西?什么是不必要的无关紧要的东西?
容器必须被理解为一组使用 Linux 内核原语(例如命名空间和 cgroup)实现的隔离进程。目前,有 5 个命名空间:PID、挂载、网络、IPC 和用户命名空间。简而言之:使用命名空间,进程无法看到彼此,除非它们在同一个命名空间中。把它想象成类固醇上的 chroot(一种挂载命名空间)......这个概念类似于 FreeBSD jails 和 Solaris Zones。Cgroups 是一种对命名空间中一组进程的资源消耗设置限制的方法。
Docker 只是以自己的方式实现 Linux 容器,容器运行在联合文件系统的层之上,等等。
容器运行与主机相同的内核。为了减少内核的攻击面,使用seccomp、apparmor/selinux等机制过滤了大量的系统调用。此外,大量的能力被丢弃,以达到一定程度的隔离,难以越狱。
| 归档时间: |
|
| 查看次数: |
552 次 |
| 最近记录: |