Docker容器最大优势
敏捷、高性能
虚拟机——
- 本身就占用很大的资源消耗,要有独立的Guest OS;
- 虚拟机内应用对宿主机操作调用经过虚拟化软件的拦截和处理,性能有损耗;
容器的弊处
隔离不彻底
- 多个容器之间共享宿主机的系统内核。比如Windows宿主机上运行Linux容器,低版本Linux运行高版本Linux容器都是不可以的
- Linux内核中,很多资源是不能被Namespace的。比如时间,容器内应用修改了时间,宿主机的时间也会被修改
容器的限制
核心结论:容器只是一个特殊的进程,它与宿主机上的进程竞争资源
Linux Cgroups:Linux Control Groups,进程控制组。
通过Linux Cgroups对容器应用限制资源使用。
- Linux内核中用来为进程设置资源限制的一个重要功能
- 主要限制进程使用资源如COU、内存、磁盘、带宽的上限
- 在系统/sys/fs/cgroup目录下,有可以限制的资源种类
总结
- 一个正在运行的Docker容器,其实就是一个启用了多个Linux Namespace的应用进程,而这个进程使用的资源量,受Cgroups控制。
- 容器是一个“单进程”模型
- 容器本身设计,是想容器和应用是同生命周期的
- 容器里执行TOP命令,查看的数据来源于宿主机的CPU、内存数据,即/proc