最近在阅读Linux 系统编程手册。
重读了虚拟内存一章,突然发现虚拟内存的设计思想和docker images layer设计思想有异曲同工之妙。
Linux: linux中的共享内存使用场景
1、执行同一程序的多个进程,可共享一份(只读的)程序代码副本。当多个程序执行相同的程序文件(或加载相同的共享库)时,会隐式地实现这一类型的共享。
这不就是docker 设计镜像的思路吗? 共享基础镜像。
2、进程可以使用 shmget()和 mmap()系统调用显式地请求与其他进程共享内存区。这么做是出于进程间通信的目的。
docker底层也是,当你拉去一个新镜像时,如果基础镜像已存在,例如jdk的环境,总不能每次build一个镜像就new一个新的jdk基础镜像吧。 显然底层是使用同一个jdk基础镜像。