[Docker]Docker学习笔记01.Docker概述、与传统虚拟化技术的不同、优点、应用场景

在这里插入图片描述

提取知识点

Docker

  • 由Go语言开发
  • 是一个装东西的容器(可以装操作系统、软件等)
  • 可简单认为是个虚拟机软件,但比虚拟机好太多,所以我们用它
  • 占用系统资源少
  • 可以实现秒级启动

目录:

一、Docker概述(Docker真正实现一次编译,到处运行)
二、Docker与传统虚拟化技术的不同之处
三、为什么要使用Docker(Docker的优点)
四、Docker应用场景

内容

一、Docker概述(Docker真正实现一次编译,到处运行)

Docker 是一个开源应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

最初是 dotCloud 公司内部在2013年的一个业余项目,Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud公司后来都改名为Docker Inc。

Docker 项目的目标是 实现轻量级的操作系统虚拟化解决方案
用户操作 Docker 的容器就像操作一个 快速轻量级的虚拟机 一样简单

由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为 容器(Container)

最初实现是基于 LXC(Linux 容器技术),从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷

Docker 从 17.03 版本之后分为

  • CE(Community Edition: 社区版)
  • EE(Enterprise Edition: 企业版)
    我们使用社区版(1.12版本是里程碑是版本,我们要用1.12之后的版本)

二、Docker与传统虚拟化技术的不同之处

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个 完整操作系统,再在该系统上再运行所需应用进程。
而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟
在这里插入图片描述
如上图 VMware虚拟机依赖CPU硬件的虚拟化技术(可参考[VMware]解决"已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作"的问题),先在虚拟机上虚拟一块硬件,然后再装操作系统,且在虚拟机上必须安装好系统后才能在系统中安装软件。
Docker容器技术则无需依赖硬件的虚拟化技术,可在Docker中安装操作系统或直接安装软件(使用安装Docker的系统)。

可见容器是在操作系统层面上实现虚拟化,可直接安装软件,此时会自动依赖一个系统,而传统方式则是在硬件层面实现。

注:虚拟机中不可以再运行虚拟机,而Docker中可以运行Docker或其他软件

三、为什么要使用Docker(Docker的优点)

作为一种 新兴 的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。

更高效的利用系统资源:一台主机上可以同时运行数千个 Docker容器

由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。

更快速的启动时间:秒级启动

传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。

持续交付和部署

对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。

使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。

而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

更轻松的迁移:一致的运行环境

Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境(开发环境、测试环境、生产环境)一致性,由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

更轻松的维护和扩展

Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
在这里插入图片描述

四、Docker应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章