让我们一起来学习Docker(一)
什么是docker
- Docker是开源的平台,它包括有容器引擎和Docker Hub注册服务器
- Docker容器引擎可以让开发者打包应用和依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。
- Docker Hub注册服务器用户可以在上面建立自己的镜像仓库来存储,管理和分享镜像,实现使用docker一次配置处处运行
容器与虚拟机的对比
docker是容器的一种,它可是看做是轻量级的虚拟机它和大家所知道的传统的重量级的虚拟机(VMware,VirtualBox,VirtualPC)相比的一些不同,大家可以根据自己的需求来选择使用。
相同点
- 都可以在不同主机之间迁移
- 都具有root权限
- 都可以远程控制
- 都有备份和回滚操作
不同点
描述 | 容器 | 虚拟机 | ||
---|---|---|---|---|
操作系统 | 性能上得优势,能轻易运行多个操作系统 | 可以安装任何系统性能较差 | ||
原理 | 和宿主主机共享内核,所有的容器运行在容器引擎之上,容器并不是一个完整的操作系统它们是所有容器共享操作系统,在进程级别进行隔离 | 每一个都是建立在虚拟的硬件之上,提供指令级的虚拟,每一个都是完整的操作系统 | ||
优点 | 更为集中和高效,一个节点能够运行相当多的容器,非常的节省资源,内核由提供者升级,服务由服务提供者管理 | 对于操作系统有绝对的权限,自己来完成系统的升级和版本控制,具有一整套的资源,每一个虚拟机和真实的物理机相同,可以运行在同一个物理节点 | ||
资源管理 | 弹性的资源分配 | 每个资源的添加都需要操作系统重新对资源的分配,需要重启 | ||
远程管理 | 只要容器里面的操作系统启动,可以通过shell和远程桌面进行 | 远程控制由虚拟化的平台提供,可以在启动之前连接,所以可以安装操作系统 | ||
缺点 | 对内核没有控制权限,只有容器提供者可以升级,只有一个内核运行在物理节点上,几乎不能实现不同操作系统的混合 | 每一台虚拟机需要耗费极大的资源和负载,需要用户管理,由于物理机的资源问题可以运行的虚拟机个数也是有限制的 | ||
配置 | 极速的配置,可以很快的准备好 | 需要较长的时间,物理机的性能也有很大的关系,而且需要自行安装操作系统 | ||
启动时间 | 秒级 | 分级 | ||
硬盘的使用 | MB | GB | ||
性能 | 和原生相似 | 弱于原生 | ||
系统支持量 | 单机支持上千个 | 一般受物理资源的限制不过能用几十个 |
docker的应用场景
- 加速本地开发,通过docker可以快速的构建开发环境和运行环境并且提供其他开发人员的使用。
- 自动打包和部署应用
- 创建轻量,私有Paas环境
- 自动化测试和持续的集成部署
- 部署并扩展web应用,数据库和后端服务器
- 创建安全沙盒
- 轻量级的桌面虚拟化
docker的三大组件
- 镜像:静态的只读模板,可以看成是保存着容器运行需要的环境和应用执行的代码,它是使用分成的机制,每次构建都是层级化的通过文件连级来附加在原有的镜像之上。
- 容器:容器是镜像的运行状态,它不会具体的关注你的到底在运行着什么样的程序和服务,它所执行的都是相同的创建,开始,停止,重启,销毁。它也不会理会你运行在什么样的环境中,个人电脑,云服务器,虚拟机,各大不同的操作系统。这些也是的容器拥有很好的移植性,扩展性,便于交互和传输。
- 库:采用注册服务器来存储和共享用户镜像(Docker Hub)。
结束语
docker的简述就到这里,大家对docker是什么应该有个大概的了解了。后续会讲解docker的操作(因为环境的问题不会在这里给大家介绍docker安装)