一、简介
1)Docker 是基于 Go 语言实现的开源容器;
2)它是内核级的虚拟化,利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化;
3)目标:使项目运行环 境“一次封装,到处运行”;
4)利用 docker 创建的运行环境叫做 docker 容器,容器是通过 docker 镜像创建的,docker 镜像文件可以放在私有仓库中也可以放在共有仓库中;
二、与VM比较
Docker:面向内核、软件(秒级)
虚拟机:面向硬件的(分钟级)
对比项 | Docker容器 | VM虚拟机 |
---|---|---|
操作系统 | 与宿主机共享OS | 宿主机OS上运行虚拟机OS |
存储大小 | 镜像小(便于存储和传输) | 镜像大 |
运行性能 | 几乎没有额外的性能损失 | 额外分配消耗CPU和内存 |
移植性 | 轻便灵活,适应于Linux | 笨重,与虚拟化技术耦合高 |
面向用户 | 面向软件开发人员 | 面向硬件运维人员 |
三、特点
1)效率高
用户只需要几分钟,就可以把自己的程序“Docker 化;
Docker 依赖于“写时复制” (copy-on-write)模型,使修改应用程序也非常迅速;
由于去除了管理程序的开销,Docker 容器拥有很高的性能,一台宿主机中 也可以运行更多的容器,使用户尽可能的充分利用系统资源;
2)职责明确
开发人员只需要关心容器中运行的应用程序;
运维人员只需要关心如 何管理容器;
3)结构完整
缩短代码从开发、测试到部署、上线运行的周期,让你的应用 程序具备可移植性,易于构建,并易于协作;
4)契合微服务架构
还鼓励面向服务的体系结构和微服务架构;
Docker 推荐单个容器只运行一个 应用程序或进程,易于扩展,搭建分布式的应用程序模型;
四、架构
1)Docker daemon
Docker守护进程:运行在宿主机(DOCKER_HOST)的后台,可通过Docker客户端进行通信;
2)Client
Docker客户端:是Docker的用户界面,它可以接受用户命令和配置标识,并与Docker daemon通信;
3)Images
Docker镜像:一个只读模板,它包含创建Docker容器的说明;
4)Container
容器:镜像的可运行实例(镜像和容器的关系有点类似于面向对象中,类和对象的关 系)
5)Registry
Docker Registry是一个集中存储与分发镜像的服务,一个 Docker Registry 可包含多个 Docker 仓库;每个仓库可包含多个镜像标签;每 个标签对应一个 Docker 镜像(类似Maven 仓库)