本系列文档,主要参见于《docker技术入门与实战》和高俊峰老师的讲义以及自己的理解,作为自己学习的笔记和成长的见证,也作为技术分享和各位交流之用,如有不当之处请不吝赐教。

1、docker是基于GO语言实现的开源容器项目。docker的主要构想是“build,ship and run any app ,anywhere”,即通过对应用的封装(packaging)、分发(distribution)、部署(deployment)、运行(runtime)生命周期进行管理,达到应用组件级别的“一次封装,到处运行”。

2、docker通过引入分层文件系统构建和高效的镜像机制,降低了迁移难度。简单来说,docker容器可以理解为一种轻量级的沙盒(sandbox),每个容器里都运行着一个应用(服务/进程),不同的容器相互隔离,容器之间又可以进行通过网络互相通信。容器的创建和停止十分快速、几乎和创建和终止原生应用一致。

3、docker在开发和运维中的优势:

  1. 更快速的交付和部署

    使用docker,开发人员可以使用镜像来快速构建一套标准的开发环境,完成开发后,测试和运维人员可以直接使用完全相同的环境进行部署代码。只要是开发测试过的代码,就可以确保在生产环境无缝运行。

  2. 更高效的资源利用

    docker是内核级别的虚拟化,他不需要额外的虚拟化管理程序,所以,他可以实现更高性能、同时对资源的额外需求很低。

  3. 更轻松的迁移和扩展

    docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公/私有云、个人电脑等同时支持主流的操作系统,这样就可以在不同的平台上轻松的切换。

  4. 使用dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作,所以修改都是以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。

4、docker与虚拟机的比较

  1. docker容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式部署(数分钟)要快的多

  2. docker容器对系统资源需求很少,一台主机上可以同时运行数千个docker容器。

  3. docker通过类似GIT设计的理念的操作来方便用户的获取、分发和更新应用镜像,存储复用,增量更新。

  4. docker通过dockerfile支持灵活的自动化创建和部署机制,以提高工作效率,并标准化流程。

5、docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的os,因此更加轻量级。