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

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

提取知识点

Docker

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

目录:

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

内容

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

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

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

  • Github地址:https://github.com/moby/moby

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与传统虚拟化技术的不同之处

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个 完整操作系统,再在该系统上再运行所需应用进程。
而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟
[Docker]Docker学习笔记01.Docker概述、与传统虚拟化技术的不同、优点、应用场景_第2张图片
如上图 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]Docker学习笔记01.Docker概述、与传统虚拟化技术的不同、优点、应用场景_第3张图片

四、Docker应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

你可能感兴趣的:(Docker,容器,System,Docker)