以下是个人学习过程中所记,仅作为学习经历和备忘,有问题不负责,但可以交流和探讨。

1 什么是Docker?

  在Docker的官网,Docker的设计师们对Docker的定义是:
  Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. As a result, IT can ship faster and run the same app, unchanged, on laptops, data center VMs, and any cloud.

  Docker是为开发者和系统管理员提供的一套用于创建、发布和运行分布式应用的开放平台。它由Docker引擎(一个可移植的轻量级运行环境和打包工具)和Docker Hub(用于分享应用和提供自动化工作流的云服务)组成。Docker可以通过组件快速地组合成应用,并且减少开放、QA和发布环境之间的摩擦。最终,IT工程师能快速地将应用毫无更改地发布到笔记本、数据中心的虚拟机和所有的云环境上。

  Docker是Docker.Inc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在GitHub上, 基于Go语言并遵从Apache2.0协议开源。Docker在2014年6月召开DockerConf 2014技术大会吸引了IBM、Google、RedHat等业界知名公司的关注和技术支持,无论是从 GitHub 上的代码活跃度,还是Redhat宣布在RHEL7中正式支持Docker, 都给业界一个信号,这是一项创新型的技术解决方案。就连 Google 公司的 Compute Engine 也支持 docker 在其之上运行, 国内“BAT”先锋企业百度Baidu App Engine(BAE)平台也是以Docker作为其PaaS云基础。

  Docker的英文本意是“搬运工”,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行,最重要的是,它不依赖于任何语言、框架或系统。

  通俗的讲就是让软件开发人员无需关心团队中每个人使用的操作系统,不必担心开发环境不一样,即开发团队中的每一个人都有一个一模一样的开发环境复制品,并且这个复制品是可以扩展的,这听起来感觉很不可思议,似乎虚拟机也能够做到,比如说VMWare、VirtualBox,装好虚拟机,然后装个系统,然后在系统中将开发环境搭建好后,然后将这个系统Clone给每个开发人员,这样就做到了开发环境一模一样了。而且可以实现多个互不影响的开发环境。

  对于个人而言,如果这是个利器,那么以后想要重装系统什么的,只需要安装上Docker,那么在原来的系统Docker上已经配置好了的开发环境,只需要Clone一下就OK了,这是多么的方便,要是在开发的使用上,也没有占用很大的内存,这是非常不错的选择。

2 Docker和虚拟机

  既然虚拟机和Docker都能达到同样的效果,那么接下来对比下,来让你做出一些选择。

  Docker核心是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观。

  从虚拟化层面来看,传统虚拟化技术(虚拟机)是对硬件资源的虚拟,容器技术则是对进程的虚拟,从而可提供更轻量级的虚拟化,实现进程和资源的隔离。从架构来看,Docker比虚拟化少了两层,取消了Hypervisor层和Guest OS层,使用Docker Engine进行调度和隔离,所有应用共用主机操作系统,因此在体量上,Docker较虚拟机更轻量级,在性能上优于虚拟化,接近裸机性能。从应用场景来看,Docker和虚拟化则有各自擅长的领域,在软件开发、测试场景和生产运维场景中各有优劣。

3 Docker的应用场景?

  上面说的给团队的中每一个成员复制一份一模一样的开发环境,这是一个应用,
  这里先介绍几个概念知识:PaaS、SaaS、CaaS、IaaS。
  PaaS是Platform-as-a-Service的缩写,意思是平台即服务。把服务器平台作为一种服务提供的商业模式。通过网络进行程序提供的服务称之为SaaS(Software as a Service),而云计算时代相应的服务器平台或者开发环境作为服务进行提供就成为了PaaS(Platform as a Service)。所谓PaaS实际上是指将软件研发的平台(计世资讯定义为业务基础平台)作为一种服务,以SaaS的模式提交给用户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应用的开发速度。在2007年国内外SaaS厂商先后推出自己的PAAS平台。

  CaaS,即Docker Containers as a Service ,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。
  SaaS是Software-as-a-Service(软件即服务)的简称,随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。SaaS 应用软件的价格通常为“全包”费用,囊括了通常的应用软件许可证费、软件维护费以及技术支持费,将其统一为每个用户的月度租用费。

  IaaS,Infrastructure as a Service,即基础设施即服务。 消费者通过Internet 可以从完善的计算机基础设施获得服务。这类服务称为基础设施即服务。基于 Internet 的服务(如存储和数据库)是 IaaS的一部分。Internet上其他类型的服务包括平台即服务(PaaS)和软件即服务(SaaS)。PaaS提供了用户可以访问的完整或部分的应用程序开发,SaaS则提供了完整的可直接使用的应用程序,比如通过Internet管理企业资源。

  相信以后的软件使用是美好的。

  一台16核32G内存的虚拟机上,需要跑500+个用户的应用(每个应用的功能可以认为是一个网站 + 一系列的 RESTful API),有两个事情很重要:

  资源隔离:比如限制应用最大内存使用量,或者资源加载隔离等。

  低消耗:虚拟化本身带来的损耗需要尽量的低。

  我们不可能在一台机器上开500个虚拟机,虽然可以在资源隔离方面做的很好,但这种虚拟化本身带来的资源消耗太严重。另一个方面,我们可以考虑使用语言级别沙箱,虽然这种「虚拟化」本身的消耗可以低到忽略不计,但是资源隔离方面绝对是噩梦,比如你打算在一个JVM里隔离内存的使用。而Docker很好的权衡了两者,即拥有不错的资源隔离能力,又有很低的虚拟化开销。

4 相关知识—虚拟化技术

  虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

  虚拟化技术实现相关软件:

  KVM、Xen、Hyper-V、VMware EXSI 、Docker、Openstack等。

  对于KVM、OpenStack、Docker,可以这么说,其中OpenStack扮演整体数据中心管理方案的角色,KVM作为多租户计算资源管理工具,而Docker容器则负责与应用部署包相关的工作。

5 参考资料

https://www.docker.com/enterprise
http://www.infoq.com/cn/articles/docker-core-technology-preview
http://baike.baidu.com/view/1413359.htm
http://baike.baidu.com/view/2088218.htm
http://baike.baidu.com/view/369107.htm
http://baike.baidu.com/view/2482595.htm
https://www.zhihu.com/question/22969309
http://dockone.io/article/723
http://www.wenwenyun.com/a/tip/2014/0924/533.html
http://www.wenwenyun.com/a/tip/2014/0926/552.html

【0】Docker---认识Docker相关推荐

  1. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...

  2. Springboot - 用SpringBoot 2.3.0.M1创建Docker映像

    Springboot - 用SpringBoot 2.3.0.M1创建Docker映像) 1.发布 2.说明 3.常见的Docker 运行方式 4.常规方式通过docker 运行springboot ...

  3. CentOS7.0(1406)安装Docker后无法启动

    1. 问题现象 从http://archive.kernel.org/centos-vault/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso下 ...

  4. 基于phpems6.0考试系统docker镜像

    基于phpems6.0考试系统docker镜像 前言 使用 准备工作 拉取镜像 运行容器 修改配置 退出容器并重启 访问前台 xdebug远程调试 关于phpems的使用可以参考官网 参考链接 前言 ...

  5. 【Docker】Docker的三大核心组件

    镜像(Image).容器(Container).仓库(Repository)是我们常说的Docker的三大组件,接下来就让我们一起详细地探索一番吧. 一.镜像(Image) 什么是Docker镜像? ...

  6. 运行第一个Docker容器-Docker for Web Developers(1)

    1. Docker介绍 Docker由dotCloud公司发起的一个内部项目,后来Docker火了,dotCloud公司改名为Docker了: Docker使用了Go语言开发,基于 Linux 内核的 ...

  7. Docker 17.03系列教程(一)Docker EE/Docker CE简介与版本规划

    为什么80%的码农都做不了架构师?>>>    近日,Docker发布了Docker 17.03.进入Docker 17时代后,Docker分成了两个版本:Docker EE和Doc ...

  8. [转帖]Docker里运行Docker docker in docker(dind)

    Docker里运行Docker docker in docker(dind) http://www.wantchalk.com/c/devops/docker/2017/05/24/docker-in ...

  9. 阿里云服务器Docker及Docker Compose的安装

    2019独角兽企业重金招聘Python工程师标准>>> 本文对阿里云ECS服务器如何安装Docker和Docker Compose进行说明,以centOS系统为例. 一.开通外网的E ...

  10. 【Git+Docker】Docker初期学习认识和安装配置详解

    Docker: 特性: 1.以应用为中心 2.自动化构建 3.版本控制 4.组件重用 5.镜像共享 6.工具生态系统 具体后续学习 优势: 1.文件系统隔离 2.进程隔离 3.网络隔离 4.资源隔离和 ...

最新文章

  1. 如何挑选一家好的软件测试培训机构
  2. 在eclipse里jsp编译后的java和class文件的位置
  3. ajax.filter json过滤,$.ajax()的dataFilter方法
  4. 2019ICPC(沈阳) - Fish eating fruit(树形dp+树根转移)
  5. 无忧开通了博客园博客主页
  6. Codeforces 977D: Divide by three, multiply by two(暴力)
  7. 直播预告|阿里云天池牛年读书会《中学生可以这样学Python(微课版)》
  8. 六级词汇打卡第三天(三)
  9. [vscode] 推荐插件及配置
  10. 智能实验室-杀马(Defendio) 3.0.0.615 beta 7
  11. python分布式定时任务_分布式定时任务框架——python定时任务框架APScheduler扩展...
  12. android 弹窗banner,弹窗交互规范分析|UI|观点|DesigneR_D - 原创文章 - 站酷 (ZCOOL)
  13. jquery ajax 回调函数里面再执行ajax函数,jQuery AJAX 和其回调函数
  14. pythonscrapy爬虫ip代理池_Scrapy 框架插件之 IP 代理池
  15. 如何利用等比频宽公式将信号分解成部分重叠的子频段
  16. Ubuntu 20下pycharm无法使用中文输入法
  17. SSO单点登录_04
  18. VueHub:我用 ChatGPT 开发的第一个项目,送给所有 Vue 爱好者
  19. 【Try to Hack】Kerberos基础
  20. linux下微妙级别定时实现

热门文章

  1. latex编译pdf winedt_LaTeX-WinEdt 编辑器和 PDF 文件的 Acrobat 11 程序关联
  2. Springboot+MybatisPlus整合poi实现导出导入Excle表格
  3. CortexA7工业级迅为-iMX6UL开发板硬件和资料介绍
  4. Jenkins设置Window编译环境从节点
  5. 一建加试英语和计算机,一建和一造哪个考试难度大
  6. lvgl8.2 自定义字库
  7. 电气跟计算机考研,罗切斯特大学电气与计算机工程研究生怎么样?好不好
  8. 信息安全从业人员职业规划(甲方乙方分别说明)
  9. 春节“聊天宝”使用秘籍,轻松应对亲戚尬聊
  10. 五分钟制作sql注入靶场