zoukankan      html  css  js  c++  java
  • 如何通俗解释Docker是什么?

    如何通俗解释Docker是什么?

    2010年,几个搞IT的年轻人,在美国旧金山成立了-家名叫 dotCloud 的公司。

    这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。

    后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为一Docker。

    Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司, 作为一家小型创业企业,在激烈的竞争之下,也步履维艰。
    正当他们快要坚持不下去的时候,脑子里蹦出了"开源” 的想法。
    什么是"开源”?开源,就是开放源代码。也就是将原来内部保密的程序源代码开放给所有人,然后让大家一起参与进来,贡献代码和意见。

    有的软件是一开始就开源的。也有的软件,是混不下去,创造者又不想放弃,所以选择开源。自己养不活,就吃“百家饭”嘛。
    201 3年3月,dotCloud公司的创始人之一,Docker之父, 28岁的Solomon Hykes正式决定,将Docker项目开源。

    不开则已,一开惊人。
    越来越多的IT工程师发现了Docker的优点,然后蜂拥而至,加入Docker开源社区。
    Docker的人气迅速攀升,速度之快,令人瞠目结舌。
    开源当月,Docker 0.1版本发布。此后的每一个月, Docker都会发布一个版本。到2014年6月9日,Docker 1.0 版本正式发布。
    此时的Docker,已经成为行业里人气最火爆的开源技术,没有之一。 甚至像Google、 微软、Amazon、VMware这样的巨头, 都对它青睐有加,表示将全力支持。
    Docker火了之后,dotCloud公司干脆把公司名字也改成了Docker Inc。
    Docker和容器技术为什么会这么火爆?说白了,就是因为它"轻”。
    在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWareOpenStack

    相信很多人都用过虚拟机。虚拟机,就是在你的操作系统里面,装-个软件, 然后通过这个软件,再模拟-台甚至多台”子电脑”出来。

    在”子电脑"里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个”子电脑”, 里面都开上QQ。”子电脑” 和"子电脑”之间,是相互隔离的,互不影响。
    虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化。
    虚拟机虽然可以隔离出很多"子电脑”,但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare) 。
    而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟-个小规模的环境(类似“沙箱”)。

    它启动时间很快,几秒钟就能完成。而且,它对资源的利用率很高(一台主机可以同时运行几千个Docker容器) 。此外, 它占的空间很小,虚拟机-般要几GB到几+GB的空间,而容器只需要MB级甚至KB级。

    正因为如此,容器技术受到了热烈的欢迎和追捧,发展迅速。
    我们具体来看看Docker。
    大家需要注意,Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。
    想要搞懂Docker,实看它的两句口号就行。
    第一句,是“Build, Ship and Run”。

    也就是,"搭建、 发送、运行”,三板斧。
    举个例子:
    我来到一片空地,想建个房子,于是我搬石头、砍木头、画图纸,-顿操作,终于把这个房子盖好了。

    结果,我住了一段时间,想搬到另一片空地去。这时候,按以往的办法,我只能再次搬石头、砍木头、画图纸、盖房子。
    但是,跑来一 个老巫婆,教会我- -种魔法。
    这种魔法,可以把我盖好的房子复制一份,做成”镜像”,放在我的背包里。

    等我到了另一片空地,就用这个"镜像”,复制一套房子,摆在那边,拎包入住。

    怎么样?是不是很神奇?
    所以, Docker的第二句口号就是: "Build once, Run anywhere (搭建- -次, 到处能用)
    Docker技术的三大核心概念,分别是:

    • 镜像(Image)

    • 容器(Container)

    • 仓库(Repository)

    我刚才例子里面,那个放在包里的“镜像”,就是Docker镜像。 而我的背包,就是Docker仓库。 我在空地上,用魔法造好的房子,就是一个Docker容器。
    说白了,这个Docker镜像, 是-个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一 些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
    也就是说,每次变出房子,房子是一样的,但生活用品之类的,都是不管的。谁住谁负责添置。
    每一个镜像可以变出-种房子。那么,我可以有多个镜像呀!
    也就是说,我盖了一个欧式别墅,生成了镜像。另一个哥们可能盖了一个中国四合院,也生成了镜像。还有哥们,盖了-个非洲茅草屋,也生成了镜像。。。

    这么一来,我们可以交换镜像,你用我的,我用你的,岂不是很爽?

    于乎,就变成了一个大的公共仓库。
    负责对Docker镜像进行管理的,是Docker Registry服务(类似仓库管理员)。
    不是任何人建的任何镜像都是合法的。万-有人盖了一个有问题的房子呢?
    所以,Docker Registry服务对镜像的管理是非常严格的。
    最常使用的Registry公开服务,是自方的Docker Hub,这也是默认的Registry, 并拥有大量的高质的官方镜像。
    完整文章:
    小枣君: 10分钟看懂Docker和K8S

    1.内容有错还请在评论区指出哦!谢谢!
  • 相关阅读:
    day06-Java方法和数组(二)
    day05作业-----------Java方法和数组
    day01作业-------------Java概述
    day04--Java流程控制
    获取数据库连接对象的方法
    oracle数据库时间的处理
    把页面获得的String格式的时间转换成date存入到数据库
    复选下拉菜单
    log4j实现日志记录(搬运)
    js点击按钮打开下拉菜单,再次点击关闭的简单办法
  • 原文地址:https://www.cnblogs.com/bbdbolg/p/14932802.html
Copyright © 2011-2022 走看看