Docker是什么

相信我们很多人都使用多VM(Virtual Machine),也就是虚拟机,简单的来说Docker就是类是于VM的容器,但Docker要轻量得多,VM(Virtual Machine)是重量级的;VM是硬件级别的虚拟化技术,而Docker只是内核级别的虚拟化技术,Docker是开源的容器引擎,就拿Docker官方的两张图来说:

VM(Virtual Machine):第一张是VM的图;VM其实就是一个虚拟的硬件环境,在使用VM的时候我们都需要在VM中装一个完整的OS然后再在OS中部署我们的Application,图片中的Hypervisor就是VM的核心,它用于虚拟硬件环境,然后可以在Hypervisor之上安装多个OS;

Docker:第二张就是Docker在于整个结构中的图,Docker没有模拟整个硬件环境,它只需要在宿主主机中装Docker Engine(Docker引擎),然后就可以在Image(镜像)创建多个Container(容器),各个容器运行环境都是独立的可以简单的说每个Container都是一个独立的OS,每个Container与宿主使用同一个内核,对进程与资源进行了隔离;Docker也不是新技术,Docker只是在LXC(Linux Container)的基础上进行封装发展起来的;

光从这两张图就可以看出VM与Docker的区别了,相比Docker,VM是多么的轻量;单个程序很多时候不能够完全的使用单台计算机的硬件资源,这时候VM就出现它能够在单台计算机上装多个OS运行多个程序,但VM上的OS占用资源过多;而Docker与主机共享内核,可以运行更多的Container,Docker比VM更能榨干计算机的硬件资源

VM(Virtual Machine)

  1. 需要安装OS
  2. 基于硬件的虚拟化
  3. 启动每个OS都需要几十秒
  4. 主机上的OS数量有限制
  5. OS占用的资源过多

Docker

  1. 不需要安装OS
  2. 基于内核的虚拟化技术
  3. 每个Container的启动是毫秒级别
  4. 主机上可以有几百上千个Container

Docker的作用

关于开发

在之前程序的部署是个麻烦的环节,开发者写好程序之后要进行测试就需要在测试机装程序远行的环境,到测试好之后又要在正式机上装完全一样的程序运行环境,当测试机、或正式机上的运行环境与开发的环境有一点不一样程序就会出现问题,而使用了Docker之后就不会出现在测试机配置运行环境、在正式机远行环境这些问题,只需要开发者配置好一个Image,然后再测试机、正式机上下载Image,然后在Container中运行程序即可,省去了来回配置运行环境的问题;

关于程序分发

现在我们每当要使用一个程序或框架的时候都是把软件下下来然后各种折腾程序的远行环境程序才能跑起来,当使用了Docker后就可以把程序放在Image中,使用者只需要把Image下下来即可,不需要去折腾各种环境各种依赖,Docker决解了程序依赖的问题,它把依赖都打包进了Image中

Docker为CI(Continuous integration)、MicroService的使用提供了很好的使用环境,企业内部的私有云也很多使用了Docker;

Docker发展

短短两三年时间,Docker得到了各大云服务厂商的支持现在亚马逊、微软、谷歌等等的云服务都有支持了Docker;Docker不再只支持Linunx,微软对Docker可以说是很看好的,最新的Windows Server将原生的支持Docker;CoreOS 也发布了与Docker类是的容器引擎;

由于Docker才出现没几年所以Docker周边的工具还是健全,管理过多的容器还是很麻烦的,但Docker现在的生态环境很活跃相信这些只是时间问题;

文章首发地址:Solinx
http://www.solinx.co/archives/372

Docker是什么的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  3. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  4. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  5. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  6. scrapy爬虫docker部署

    spider_docker 接我上篇博客,为爬虫引用创建container,包括的模块:scrapy, mongo, celery, rabbitmq,连接https://github.com/Liu ...

  7. [原][Docker]特性与原理解析

    Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上, ...

  8. 开发者的利器:Docker 理解与使用

    困扰写代码的机器难免会被我们安装上各种各样的开发工具.语言运行环境和引用库等一大堆的东西,长久以来不仅机器乱七八糟,而且有些相同的软件还有可能会安装不同的版本,这样又会导致一个项目正常运行了,却不小心 ...

  9. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  10. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

随机推荐

  1. jquery常见知识点 总结

    1. jquery特点 2. jquery中css选择器用法 jQuery使用了一套css选择器,共有5种,即标签选择器,ID选择器,类选择器,通用选择器和群组选择器,现分述如下:   标签选择器 用 ...

  2. HDU 1237 简单计算器 栈

    额,题目是中文的,题意就不用说了= =都看懂喽.写个字符串先把这行计算式存进去,不过不能存一个算一个,因为考虑到乘除法比加减法优先的原则,如果是加号减号就先存着等待计算,如果是乘号除号就直接算出来值就 ...

  3. 新手编辑c语言的注意事项

    一般情况下新手都会犯的错误 1,注意在c语言中的大小写是有区别的,但在windows系统中默认没有差别,但是有时候也会出现bug. 2.在编程的时候注意定义你所使用的变量 3,每行代码的结尾注意要有分 ...

  4. quartz TRIGGER_STATE变为ERROR解决方法

    今天,项目组一个同事说开发环境一直正常quartz定时任务今天不跑了,因为异常已经封装了,所以应该不是没有捕获异常导致.也检查了JobDetail肯定没有重复的任务,最后检查qrtz_triggers ...

  5. CSDN数据库被爆 统计CSDN用户都喜欢哪些密码

    今天有黑客在网上公开了知名网站CSDN的用户数据库,这是一次严重的暴库泄密事件,涉及到的账户总量高达600万个.有人写了一个小程序,统计了这次公布的 6428632 个 CSDN 哪些密码出镜率较高? ...

  6. Horseman - 让你更轻松的使用 PhantomJS

    Horseman 是一个 Node.js 模块,让你可以更轻松的使用 PhantomJS 进行功能测试,页面自动机,网络监控,屏幕捕获等.它提供了直接,链式的 API,易于理解的控制流,避免回调陷阱. ...

  7. Spring AOP专业术语解析

    一. 连接点(Joinpoint) 连接点就是程序执行的某个特定的位置,如:类开始初始化前.类初始化后.类的某个方法调用前.类的某个方法调用后.方法抛出异常后等.Spring 只支持类的方法前.后.抛 ...

  8. Eclipse CDT Linux下内存分析 补记

    常用工具汇总 http://www.ibm.com/developerworks/cn/linux/l-cn-memleak/ 常用的内存分析工具 http://en.wikipedia.org/wi ...

  9. IOS中限制TextField中输入的类型以及长度

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSt ...

  10. Android Contextual Menus之二:contextual action mode

    Android Contextual Menus之二:contextual action mode 接上文:Android Contextual Menus之一:floating context me ...