docker简介一、什么是容器:一种虚拟化方案。操作系统级别的虚拟化,只能运行相同或相似内核的操作系统依赖于linux内核特性:namespace和cgroups(control group)二、什么是docker?将应用程序自动部署到容器go语言开源引擎,github地址https://github.com/docker/docker基于apache 2.0 开源授权协议发行特点:提供简单轻量的建模方式职责的逻辑分离快速高效的开发生命周期鼓励面向服务的架构,高类聚,低耦合,单一执行任务三、docker使用场景使用docker容器开发,测试,部署服务创建隔离的运行环境搭建测试环境构建多用户的平台即服务paas基础设施提供软件即服务saas应用程序高性能,超大规模的宿主机部署四、docker的基本组成docker client客户端docker daemon守护进程docker image镜像docker container容器docker registry仓库docker 客户端/守护进程C/S架构本地/远程docker镜像容器的基石层叠的只读文件系统----bootfs、rootfs永远都是只读的联合加载union mount:会将各层文件系统叠加到一起,最终文件系统会包含所有底层的目录和文件,docker将这样的文件叫做镜像一个镜像可以放在另一个镜像的顶部位于下面的镜像叫做父镜像最底部的镜像叫做基础镜像,也就是图中的rootfs镜像是docker生命周期中构建和打包阶段五、容器相关技术docker依赖的linux内核特性namespace:命名空间,封装的一种概念,系统资源的隔离(进程,网络,文件系统),实现轻量化 pid:进程隔离 net:网络管理 ipc:管理跨进程的通信访问 mnt:管理挂载点 uts:隔离内核和版本标识control group:控制组,用于资源分配 资源限制 优先级设定 资源计量 资源控制带给了docker什么能力:文件系统隔离:每个容器都有自己的root文件系统 进程隔离:每个容器都运行在自己的进程环境中 网络隔离:容器间的虚拟网络接口和ip地址都是分开的 资源的隔离和分组:使用cgroup将cpu和内存之类的资源独立分配给每个docker容器