Docker,容器,虚拟机和红烧肉

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

Docker是什么?容器又是什么?

Docker 直译:码头工人。是在码头上搬运货物的工人
容器 英文:Container,如果再翻译回来就有2个不同的释义:集装箱/容器。

如果按照这世界上大多数正常人的理解,大家会把 Docker(码头工人)和 Container (集装箱)这一对事物放在一起,他们的关系一目了然:码头工人搬运集装箱。但是如果按照这世界上另外的一类人(程序员)的理解,我们会这样组合 ,Docker (代码集装箱搬运工)和 Container (容器)。

Docker与容器是完全2个不同的东西,Docker是用来组装/搬运/拆包容器的工具。当然也可以是人,我们原来这些苦逼的程序员谁没干过zip/copy/paste/unzip的工作呢?其实Docker就是这样一个工具,用来打包 (build)/传送(push/pull)/拆包 (run) 那些需要运行的应用。而容器就是那个包。

docker-concept

那么容器又是什么?

其实和集装箱很类似,就是把那些需要放在一起从A地运送到B地运行的,不能和其他程序混杂的代码封装成的一个包而已。这个概念从计算机出现的那天基本上就存在了,只是这么多年我们一直在不停的改进,但从来没有一个像docker这样的工具让容器的使用变的如此简单。在Unix/Linux的世界里,它曾将叫做 Process Container,现在被称为Control Group (cGroup);在Windows世界里,我们曾经有组件。他们的目的都一样,为了把程序从A地运送到B地,同时确保他们可以相互隔离的运行。

Docker绝对不等同于容器。一个是干活的人,一个是被搬运的物品,能一样吗?但是我仍然在各种技术文章,会议演讲上看到和听到将他们混为一谈的说法。实在觉得需要给他们正名,也是今天写这个文章的主要原因。

Docker,容器与虚拟机有啥区别?

在每一篇介绍Docker的文章里面都会看到与虚拟机比较的内容,其实我觉得这完全是拿苹果和香蕉比较,它们完全不具备可比性,至少在技术上!
大家为啥要这样比较,主要目的是让那些不了解IT但是却在管理IT的人(对,就是你的领导和你的客户)理解为啥他们好不容易,花了n多钱建立起了虚拟化平台/私有云,现在还要再花钱搞容器,搞docker。对的,这纯粹是个市场行为,与技术无关,因为他们在技术上不具备可比性。
惯常的说法,容器启动迅速(对,它只需要加载那些当前应用的进程)虚拟机启动缓慢(废话,它要加载一堆和应用无关的进程好吗)。你试试把100个应用打包到一个容器里面然后启动它,估计你一定会被98%的Windows用户打败。
给你一个hyper-v, vmware, kvm你跑不了容器,你还是需要在上面启动虚拟机,然后才能运行容器。就好像你要在家里提供100个品类的菜单,然后让你儿子每天回来点餐,给他个沙漏,然后说你随便点,我保证在10分钟内上菜。你当你是谢霆锋呢?人家谢大厨后面有10个帮厨,10个采购,10个餐厅经理,10个服务员,做的菜都是提前腌制的。你就算有三头六臂也只能说:臣妾做不到啊!
所以,容器之所以快,是把每次都要启动操作系统的操作预先完成了,这样只需要启动应用本身而已。而且,容器不会比直接启动一个应用快,甚至还会更慢一点。

然并卵,那我要这七十二变有何用?

牢骚发够了,还是说说Docker到底有啥用?Docker这个搬运工与其他搬运工不同的是,他在组装容器的时候会把应用需要的其他配件都放在一个集装箱里。这样,集装箱到货以后,直接开包就可以完成应用组装;不用再到其他地方七拼八凑的去找各种配件了。这就好比你想做红烧肉,原来的应用打包只给你打包了肉(应用),别的什么八角,香叶,冰糖,生抽老抽(应用依赖环境)都不带;现在商家提供一站式服务,一个包里不光有肉,还有七七八八所有的东西。你家里有炉子,有锅就够了(操作系统)。
另外,Docker厉害的地方在于,它不光提供了这些配料,还把物流给你搞定了。我们现在可以直接向商家(Docker Hub)下单,商家送货上门(Docker Pull),你准备好炉子和锅(操作系统),直接下锅(Docker Run),菜就上桌喽。

最后,用一句话定义Docker,那就是:优化应用运维过程的工具和生态系统。

晚上吃红烧肉!祝大家胃口好!

hongshaorou

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端进阶系列(六):盒模型

盒模型是界面布局需要掌握的基本功。盒模型基本概念 盒模型四要素:margin、border、padding、content。 盒模型分为:标准盒模型(W3C盒模型) 、 怪异盒模型(IE盒模型) 盒模型区别 怪异盒模型总宽度 content…

持续集成coding

1、安装docker yum -y install docker yum -y install composer yum -y install docker-compose 2、启动docker服务 service docker start 3、测试安装结果 docker-compose --version 4、创建目录 mkdir /data/continus-deploy 5、写入docker-compose.yml version: …

《Netkiller Spring Cloud 手札》Spring boot 2.0 mongoTemplate 操作范例

2019独角兽企业重金招聘Python工程师标准>>> 本文节选自 《Netkiller Spring Cloud 手札》 Netkiller Spring Cloud 手札 Spring Cloud Cookbook Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市望海路半岛城邦三期 518067 86 13113668890<netkillermsn.com> …

这些年来什么才是最好的投资?

这些年&#xff0c;就是从我毕业&#xff08;2006&#xff09;以后... 聊投资&#xff0c;不免说股市&#xff1b;股市平时没什么人谈&#xff0c;一般暴涨暴跌时大家的谈兴就起来了。而最近这一周&#xff0c;全球股市都开启了暴跌模式&#xff0c;让投资者亏损惨重&#xff0…

JAVA经典面试题汇总(保存这篇就够了)

一. java基础篇 1.final 关键字的作用? 被 final 修饰的类不可以被继承。被 final 修饰的方法不可以被重写。被 final 修饰的变量不可以被改变&#xff0c;如果修饰引用&#xff0c;那么表示引用不可变&#xff0c;引用指向的内容可变。被 final 修饰的方法&#xff0c;JVM …

Angular5 *ngIf 和 hidden 的区别

问题 项目中遇到一个问题&#xff0c;有一个过滤查询的面板&#xff0c;需要通过一个展开折叠的button&#xff0c;来控制它的show 和 hide。这个面板中&#xff0c;有一个Select 组件&#xff0c;一个 input 查询输入框。 原来代码是&#xff1a; <div class"accordio…

ZooKeeper学习-- Zookeeper简单介绍

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术。那么什么是分布式协调技术&#xff1f;那么…

面试题-线程

1.什么是线程 &#xff1f;线程和进程的区别 &#xff1f; 线程是操作系统能够进行运算调度的最小单位&#xff0c;它被包含在进程之中&#xff0c;是进程中的实际运作单位。而进程是系统中 正在运行的一个程序&#xff0c;程序一旦运行就是进程。 区别&#xff1a;&#xf…

区块链入门教程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 区块链&#xff08;blockchain&#xff09;是眼下的大热门&#xff0c;新闻媒体大量报道&#xff0c;宣称它将创造未来。 可是&#xf…

响应式面包屑菜单

在线演示 本地下载 转载于:https://www.cnblogs.com/qixidi/p/10064991.html

5个能提高你工作效率的Excel技巧

Excel的应用在工作中还是十分广泛的&#xff0c;那么下面小编就来为大家分享5个Excel技巧来帮助大家轻松提高工作效率。1. 不用数据验证或数据有效性&#xff0c;自动生成下拉列表方法&#xff1a;按【Alt↓】组合键注意点&#xff1a;光标要定位在已有数据区域的下一个单元格&…

正则介绍_grep

2019独角兽企业重金招聘Python工程师标准>>> 10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 grep基本用法 grep [-cinvABC] word filename centos7.x版本的grep实则为grep --colorauto-c 显示匹配到的行数[rootlocalhost ~]# cp /etc/passwd /tmp [rootl…

Python实现Adaboost

1.Adaboost概念 提升方法的思路是综合多个分类器&#xff0c;得到更准确的分类结果。 即“三个臭皮匠顶个诸葛亮”。《统计学习方法》称AdaBoost是提升算法的代表&#xff0c;所谓提升算法&#xff0c;指的是一种常用的统计学习方法&#xff0c;应用广泛且有效。在分类问题中&a…

android studio : clang++.exe: error: invalid linker name in argument '-fuse-ld=bfd

公司jenkins上的C编译器最近换成了clang&#xff0c;今天更新了代码发现本地的C/C代码用NDK编译不过了&#xff0c;提示&#xff1a; “clang.exe: error: invalid linker name in argument -fuse-ldbfd” 解决办法&#xff1a; 将Android.mk文件中的“LOCAL_LDFLAGS -fuse-ld…

(1)初始化项目

2019独角兽企业重金招聘Python工程师标准>>> &#xff08;1&#xff09;初始化项目 1 使用vue-cli初始化项目 vue init webpack my-renren得到以下输出&#xff1a; ? Project name my-renren ? Project description A Vue.js project ? Author neumeng <4048…

使用SpringBoot yml配置文件

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.上一次我们已经使用SpringBoot实现了一个简单的HelloWord程序&#xff0c;辣么接下来我们简单的使用一下他的yml格式的配置文件。 2.在…

软件行业资讯

为什么只有设计师才能发明流行的新语言 先回顾一下知名编程语言的作者和创造时间&#xff1a;Fortran 语言&#xff0c;50年代&#xff0c;IBM 研究员&#xff1b;Lisp 语言&#xff0c;50年代&#xff0c;MIT 的教授和学生&#xff1b;C语言&#xff0c;70年代&#xff0c;贝尔…

电子科大软件系统架构设计——软件建模详细设计

文章目录 软件建模详细设计概述软件建模详细设计目标软件建模详细设计原则开闭原则里氏 (Liskov) 替换原则依赖倒置原则接口分离原则单一职责原则最少知识原则&#xff08;迪米特法则&#xff09;高内聚原则松耦合原则可重用原则 软件建模详细设计内容 UML 软件静态结构视图建模…

120分钟React快速扫盲教程

在教程开端先说些题外话&#xff0c;我喜欢在学习一门新技术或读过一本书后&#xff0c;写一篇教程或总结&#xff0c;既能帮助消化&#xff0c;也能加深印象和发现自己未注意的细节&#xff0c;写的过程其实仍然是一个学习的过程。有个记录的话&#xff0c;在未来需要用到相关…

微信小程序 悬浮按钮

2019独角兽企业重金招聘Python工程师标准>>> 效果视频 https://pan.baidu.com/s/1yfrDaG9YAX0--v0EA3awZA 布局需要按照圆形排列&#xff0c;所以我们需要计算每个点的坐标 代码部分 <view styleposition:fixed; wx:for"{{list}}" wx:for-index"i…