镜像
类虚拟机快照,更轻量
创建镜像的方式:
已有基础镜像修改创建子镜像
运行一个镜像,对其修改并提交
镜像特征
唯一ID(ubantu:latest)
容器
可以用镜像创建容器
容器类似虚拟机,是隔离的
唯一ID
设计用来运行单进程
容器是短暂的一次性的,停止后,再启动又回初始状态(虚拟机不同)
原因是创建容器时,docker会创建一个空白的union文件系统加载在与该镜像关联的union文件系统之上
创建变化时能体现出来,但是停止时该容器union文件系统会被丢弃(除非新建镜像或分配卷)
数据卷
不受容器生命周期影响进行数据持久化
卷针对容器保存在运行docker的宿主文件系统上
保存在其他类型文件系统上的,不是卷
卷可以在容器间共享数据
链接
容器启动,随机IP
新容器可以引用存在的容器别名,那么容器就链接在了一起
容器创建时,声明被链接时开放哪些端口(否则将没端口可用)
镜像可移植性
镜像中定义的卷只能是默认位置(指定宿主中的位置不能保证是否存在)
可以指定创建链接时公开给其他容器的端口,不能指定公开给宿主的端口(宿主端口是否可用未知)
不能在镜像上定义链接,无法预知镜像的宿主如何命名容器
镜像必须完全可移植
Cgroups
可以限制、记录、隔离进程组所使用的物理资源(CPU、memory、IO等),为容器实现虚拟化提供基本保证
本质上,cgroups是内核附加在程序上的一些hooks,程序对资源调度时触发钩子以达到资源追踪和限制的目的
Union文件系统
每个镜像与一个union文件系统关联,是一个树状的多(layer)层结构文件系统,类似版本管理的diff