欢迎关注Hadoop、Spark、Flink、Hive、Hbase、Flume等大数据资料分享微信公共账号:iteblog_hadoop
  1. 文章总数:1095
  2. 浏览总数:14,973,280
  3. 评论:4203
  4. 分类目录:122 个
  5. 注册用户数:7098
  6. 最后更新:2020年1月15日
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
iteblog_hadoop
大数据技术博客公众号bigdata_ai
开发爱好者社区:
bigdata_ai

一文了解什么是 Docker

2010年,几个大胡子年轻人在旧金山成立了一家名为 dotCloud 的 PaaS 平台的公司。dotCloud 主要是基于 PaaS 平台为开发者或开发商提供技术服务。PaaS 的全称是 Platform as a Service,也就是平台即服务。dotCloud 把需要花费大量时间的手工工作和重复劳动抽象成组件和服务,并放到了云端,另外,它还提供了各种监控、告警和控制功能,方便开发者管理和监控自己的产品。 dotCloud 最初运行在 Amazon 的 EC2 上,不过由于 dotClout 高度的抽象层次,理论上 dotCloud 可以运行在各种各样的云服务上面。PaaS 的概念虽好,但是由于认知、理念和技术的局限性,市场的接受度并不高,市场的规模也不够大。所以虽然 dotCloud 开发的东西很不错,但是公司发展依然举步维艰。2013年 dotCloud 公司创始人之一 Solomon Hykes 决定干脆将其核心的容器技术开源,这个容器技术就是本文介绍的 Docker,这一开源拉开了系统部署的变革序幕。

什么是 Docker

Docker 是 dotCloud 公司开源的一个基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离的高级容器引擎, 其将 Linux 的容器技术发挥极致。Docker 源代码使用 Go 语言开发,并使用 Apache2.0 协议进行开源,代码托管在 Github 上。

为什么需要容器技术

那么为什么我们需要使用容器技术?做过开发的同学肯定清楚,我们在自己电脑开发了一套系统,在自己电脑的环境下是可以运行的很好,但是一旦这个系统拷贝到其他系统就可以出现各种环境问题。正如下图左边那样,我们在主机上,安装了各种 App,而这些 App 又依赖各种类库,有些主机自带了一些类库,有些没有,所以我们在部署 App 的时候不得不做这些繁琐事情,而且不同 App 之间还可能互相影响,这些复杂的环境导致我们部署 App 会遇到各种各样莫名其妙的问题,使得我们开发部署效率极为低下。

Docker 简介
如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众帐号:iteblog_hadoop

而有了容器之后,我们把各种不同的 App 运行在不同的容器中,这些容器彼此隔离,它们有自己的文件系统,也不能访问对方的程序,他们的运算和资源都是隔离的。而且我们可以把 App 依赖的各种类库和 App 一同打包到容器中,这样就使得我们可以一次编写部署到处运行,从而极大提升了开发效率。

Docker 和传统的虚拟化有什么不同

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟,因此容器要比传统虚拟机更为轻便。正如下面两幅图片所示:

Docker 简介
如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众帐号:iteblog_hadoop
Docker 简介
如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众帐号:iteblog_hadoop

容器和集装箱

集装箱是能装载包装或无包装货进行运输,并便于用机械设备进行装卸搬运的一种组成工具。集装箱最大的成功在于其产品的标准化以及由此建立的一整套运输体系。能够让一个载重几十吨的庞然大物实现标准化,并且以此为基础逐步实现全球范围内的船舶、港口、航线、公路、中转站、桥梁、隧道、多式联运相配套的物流系统,这的确堪称人类有史以来创造的伟大奇迹之一。

而 Docker 其实是软件打包中的集装箱,它将任何软件和其运行依赖打包成一个轻量级、可移植的容器,而容器可以运行在几乎所有的操作系统之上!其实集装箱的英文名称就是 container。我们看 Docker 的 logo 其不就是有很多集装箱嘛。

Docker 简介
如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众帐号:iteblog_hadoop

好了,我们将在后面一些文章中介绍如何使用 Docker,欢迎关注。

本博客文章除特别声明,全部都是原创!
转载本文请加上:转载自过往记忆(https://www.iteblog.com/)
本文链接: 【一文了解什么是 Docker】(https://www.iteblog.com/archives/9758.html)
喜欢 (0)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!