Docker为什么出现?
软件开发一般大致分为两个环节,第一是本地开发, 第二是服务器部署。如果一个项目本地开发好了,那么放到服务器上,有时候安装环境会非常复杂,也正是因为其复杂性,大公司才会有专门负责项目发布的运维人员。
为了解决这个问题,Docker提出了解决方案!
Docker的核心思想,打包装箱!每个箱子都是互相隔离的,每个箱子都是一个镜像服务,在使用镜像服务前,只需要下载/运行我们发布的镜像即可!
在Docker出来之前,我们都是普遍的使用虚拟机技术!
Docker为什怎么火?本质就是十分的轻巧!
Docker的历史
Docker 公司位于旧金山,由法裔美籍开发者和企业家 Solumon Hykes 创立,其标志如下图所示。
有意思的是,Docker 公司起初是一家名为 dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。
底层技术上,dotCloud 平台利用了 Linux 容器技术。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之后被命名为“Docker”。Docker就是这样诞生的!
2013年,dotCloud 的 PaaS 业务并不景气,公司需要寻求新的突破。于是他们聘请了 Ben Golub 作为新的 CEO,将公司重命名为“Docker”,放弃dotCloud PaaS 平台,怀揣着“将 Docker 和容器技术推向全世界”的使命,开启了一段新的征程。
如今 Docker 公司被普遍认为是一家创新型科技公司,据说其市场价值约为 10 亿美元。Docker 公司已经通过多轮融资,吸纳了来自硅谷的几家风投公司的累计超过 2.4 亿美元的投资。
几乎所有的融资都发生在公司更名为“Docker”之后。
聊聊Docker
Docker是由Golang语言开发的,是开源项目!
文档地址:https://docs.docker.com/ (超级详细的)
Docker能干嘛?
之前的虚拟机技术:
虚拟机技术的缺点:
- 硬件资源占用十分多
- 冗余步骤多
- 启动很慢
Docker于虚拟机技术的不同:
比较Docker和虚拟机技术的不同:
- 传统虚拟机,虚拟出一台硬件,运行一个完整的操作系统,然后再在这个系统上安装和运行软件;
- 容器内的应用直接运行在宿主主机上,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了;
- 每个容器之间是互相隔离,每个容器都有一个属于自己的文件系统,互不影响。
Docker的优点:
- 应用更快速的交付和部署
- 更便捷的升级和扩缩容
- 更简单的系统运维
- 更高效的硬件/软件资源利用
底层原理
一、Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker的守护进程运行主机上。通过Socket从客户端访问!
DockerServer接收到Docker-Client的指令,就会执行这个命令!
二、Docker为什么比VM快?
- Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor(管理程序)实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。
- Docker利用的是宿主机的内核,而不需要Guest OS,因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。
Docker容器 | 虚拟机(VM) | |
操作系统 | 与宿主机共享OS | 宿主机OS上运行宿主机OS |
存储大小 | 镜像小,便于存储与传输 | 镜像庞大(vmdk等) |
运行性能 | 几乎无额外性能损失 | 操作系统额外的cpu、内存消耗 |
移植性 | 轻便、灵活、适用于Linux | 笨重、与虚拟化技术耦合度高 |
硬件亲和性 | 面向软件开发者 | 面向硬件运维者 |