1,概念
docker四一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的linux活windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,互相之间不会有任何的接口
2.docker和虚拟机比较
容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而虚拟机则是在硬件层面实现
虚拟机在本质上就是在模拟一台真是的计算机设备,同时遵循同样的程序执行方式,虚拟机能够利用“虚拟机管理程序”运行在物理设备上,反过来讲,虚拟机管理程序则可运行在主机设备或者“裸机”之上
传统的虚拟机需要模拟整台机器包括硬件,每台虚拟机都需要自己的操作系统,虚拟机一旦被开启,则分配给它的资源将会被全部占用,每一台虚拟机可以说是一个完整的操作系统。
总结 docker优点:
- docker启动快速属于秒级别,虚拟机通常需要几分钟去启动。
- docker需要的资源少,docker在操作系统级别进行虚拟化,docker容器和内核交互几乎是没有消耗的,性能优于通过虚拟机
- docker的架构可以共用一个内核与共享应用程序库,所占内存极小,所以docker更轻量级,docker运行的镜像数远多于计算机可以承受的操作系统的数量,对系统的利用率极高
- docker能保持环境的一致性,不同的环境具有相同的配置(可以在部署和测试两个平台一起使用)
- docker可以确保你的应用程序与资源是分隔开的,但是在管理和控制方面还需要完善
3,docker中的两大重要概念
docker镜像(images)是一个只读版本,包含了容器运行时所需要的文件系统和一些参数,镜像是无状态的,也不会改变,镜像是用来创建容器的,你可以使用docek Pull命令获取一个别人已经创建好的镜像,或者使用dockerbulid构建一个自己的镜像。
docker容器就像是一个文件夹,容器中包含了应用运行所需要的一切,每个容器都是一个隔离的和安全的应用平台,容器是镜像的一个实例,它是有状态的,而且随时会改变,容器一般是短暂的,可以通过镜像随时生成一个容器。
4,docker引擎
docker引擎是一个c/s架构的应用,主要组件有
- server是一个常驻进程
- rest api实现了client和server间的交互协议
- CLI实现容器和镜像管理,为用户提供统一的操作界面
- image是镜像
- container是容器
注意:
- docker容器通过docker镜像来创建
- 容器和镜像之间的关系类似于面向对象编程中的对象与类
- docker ------ 面向对象
- 容器 ---------对象
- 镜像 ----------类
5,docker分几部分
镜像(image):docker镜像用于创建容器的模板
容器(container):容器是独立运行的一个或一组应用
客户端(client):docker客户端通过命令或者其他工具使用docker API与docker的守护进程通信
主机(host):一个物理或者虚拟的机器用于执行docker守护进程和容器
仓库(registry):docker仓库用来保存镜像,可以理解为代码控制中的代码仓库
Docker Hub(https://hub.docker.com)提供了庞大的镜像集合供使用

