Appearance
Docker基本组成
- Docker Client客户端
- Docker Daemon守护进程
- Docker Image 镜像
- Docker Container 容器
- Docker Registry仓库
Docker Client/Server
Docker 客户端/收守护进程 C/S架构 本地/远程
Docker Image镜像
是docker容器的基石,容器基于镜像启动和运行,镜像好比容器的源代码,保存了用于启动容器的各种条件
层叠只读文件系统
最底端是引导文件系统即bootfs,类似典型的linux的引导文件系统,docker用户不会和引导文件系统有交互,当容器启动后,将会被加载到内存中,引导文件系统将会被卸载
第二层 是rootfs(Ubuntu/Centos) 可以是一种或多种操作系统,传统linux系统中root文件系统会最先以只读的方式被加载,完成了完整检查后才会切换到读写模式,在docker中root文件系统永远是只读状态,docker利用联合加载(union mount)技术,在rootfs上加载更多的只读系统,联合加载指一次加载多个只读文件系统,对外看来只是一个文件系统,将隔层文件系统叠加到一起,最终的文件系统会包含所有的底层文件系统和目录,Docker 将这样的文件系统称为---镜像
3.一个镜像可以放到另一个镜像的底部,下面的镜像称为父镜像,可以叠加多层,最底部的镜像称为基础镜像
Docker Container容器
容器通过镜像启动,容器是docker的执行单元,容器中可以运行一个或多个进程,如果说镜像是应用生命周期中的构建和打包阶段,那么容器就是应用的启动和执行阶段
容器启动时,docker会在镜像的最顶层加载一个读写文件系统,在docker中运行的程序就是在这个层中执行的,当docker第一次启动一个程序时,初始的读写层时空的,当文件系统发生变化,这些变化会 应用到这一层上, 比如,如果想修改一个文件,这个文件会从镜像的只读层复制到读写层,该文件的只读版本依然存在,但会被读写层中的该文件副本所隐藏,这就是docker的重要特性----写时复制
每个只读镜像层都是只读的,并且以后也不会发生变化 当创建一个新容器时,docker会创建一个镜像栈