对于像容器这类平台级别的技术,通常涉及的知识范围会很广,相关的软件,解决方案也会很多,初学者往往容易迷失。

那怎么办呢?

我们可以从生活经验中寻找答案。
当我们去陌生城市旅游想了解一下这个城市一般我们会怎么做?

我想大部分人应该会打开手机看一下这个城市的地图:

  1. 城市大概的位置和地理形状是什么?

  2. 都由哪几个区或县组成?

  3. 主要的交通干道是哪几条?

同样的道理,学习容器技术我们可以先从天上鸟瞰一下:

  1. 容器生态系统包含哪些不同层次的技术?

  2. 不同技术之间是什么关系?

  3. 哪些是核心技术哪些是辅助技术?

首先得对容器技术有个整体认识,之后我们的学习才能够有的放矢,才能够分清轻重缓急,做到心中有数,这样就不容易迷失了。

接下来我会根据自己的经验帮大家规划一条学习路线,一起探索容器生态系统。

学习新技术得到及时反馈是非常重要的,所以我们马上会搭建实验环境,并运行第一个容器,感受什么是容器。

千里之行始于足下,让我们从了解生态系统开始吧。

鸟瞰容器生态系统

一谈到容器,大家都会想到 Docker。

Docker 现在几乎是容器的代名词。确实,是 Docker 将容器技术发扬光大。同时,大家也需要知道围绕 Docker 还有一个生态系统。Docker 是这个生态系统的基石,但完善的生态系统才是保障 Docker 以及容器技术能够真正健康发展的决定因素。

大致来看,容器生态系统包含核心技术、平台技术和支持技术。

下面分别介绍。

容器核心技术

容器核心技术是指能够让 container 在 host 上运行起来的那些技术。

这些技术包括容器规范、容器 runtime、容器管理工具、容器定义工具、Registry 以及 容器 OS,下面分别介绍。

容器规范

容器不光是 Docker,还有其他容器,比如 CoreOS 的 rkt。为了保证容器生态的健康发展,保证不同容器之间能够兼容,包含 Docker、CoreOS、Google在内的若干公司共同成立了一个叫 Open Container Initiative(OCI) 的组织,其目是制定开放的容器规范。

目前 OCI 发布了两个规范:runtime spec 和 p_w_picpath format spec。
有了这两个规范,不同组织和厂商开发的容器能够在不同的 runtime 上运行。这样就保证了容器的可移植性和互操作性。

容器 runtime

runtime 是容器真正运行的地方。runtime 需要跟操作系统 kernel 紧密协作,为容器提供运行环境。

如果大家用过 Java,可以这样来理解 runtime 与容器的关系:

Java 程序就好比是容器,JVM 则好比是 runtime。JVM 为 Java 程序提供运行环境。同样的道理,容器只有在 runtime 中才能运行。

lxc、runc 和 rkt 是目前主流的三种容器 runtime。

lxc 是 Linux 上老牌的容器 runtime。Docker 最初也是用 lxc 作为 runtime。

runc 是 Docker 自己开发的容器 runtime,符合 oci 规范,也是现在 Docker 的默认 runtime。

rkt 是 CoreOS 开发的容器 runtime,符合 oci 规范,因而能够运行 Docker 的容器。

容器管理工具

光有 runtime 还不够,用户得有工具来管理容器啊。容器管理工具对内与 runtime 交互,对外为用户提供 interface,比如 CLI。这就好比除了 JVM,还得提供 java 命令让用户能够启停应用不是。

lxd 是 lxc 对应的管理工具。

runc 的管理工具是 docker engine。docker engine 包含后台 deamon 和 cli 两个部分。我们通常提到 Docker,一般就是指的 docker engine。

rkt 的管理工具是 rkt cli。

容器定义工具

容器定义工具允许用户定义容器的内容和属性,这样容器就能够被保存,共享和重建。

docker p_w_picpath 是 docker 容器的模板,runtime 依据 docker p_w_picpath 创建容器。

dockerfile 是包含若干命令的文本文件,可以通过这些命令创建出 docker p_w_picpath。

ACI (App Container Image) 与 docker p_w_picpath 类似,只不过它是由 CoreOS 开发的 rkt 容器的 p_w_picpath 格式。

Registry

容器是通过 p_w_picpath 创建的,需要有一个仓库来统一存放 p_w_picpath,这个仓库就叫做 Registry。

企业可以用 Docker Registry 构建私有的 Registry。

Docker Hub(https://hub.docker.com) 是 Docker 为公众提供的托管 Registry,上面有很多现成的 p_w_picpath,为 Docker 用户提供了极大的便利。

Quay.io(https://quay.io/)是另一个公共托管 Registry,提供与 Docker Hub 类似的服务。

容器 OS

由于有容器 runtime,几乎所有的 Linux、MAC OS 和 Windows 都可以运行容器。但这不并没有妨碍容器 OS 的问世。

容器 OS 是专门运行容器的操作系统。与常规 OS 相比,容器 OS 通常体积更小,启动更快。因为是为容器定制的 OS,通常它们运行容器的效率会更高。

目前已经存在不少容器 OS,CoreOS、atomic 和 ubuntu core 是其中的杰出代表。

下一节继续介绍容器平台技术和容器支持技术。

转载于:https://blog.51cto.com/cloudman/1915834

容器生态系统 - 每天5分钟玩转容器技术(2)相关推荐

  1. 每天5分钟玩转容器技术 ---- 系列文章

    通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136) 定时执行 Job - 每天5分钟玩转 Docker 容器技术(135) 并行执行 Job - 每天5分钟玩转 ...

  2. 转 容器生态系统 (续) - 每天5分钟玩转容器技术(3)

    每天5分钟玩转容器技术(3) http://www.cnblogs.com/CloudMan6/p/6718464.html 叫板OpenStack:用Docker实现私有云 http://www.c ...

  3. 【视频】运行第一个容器 - 每天5分钟玩转容器技术(5)

    [视频]运行第一个容器 - 每天5分钟玩转容器技术(5) CloudMan 2017-04-21 第5篇 [视频]运行第一个容器 这两天制作的视频,安装 Docker 并运行第一个容器,希望对大家有帮 ...

  4. 容器生态系统 (续) - 每天5分钟玩转容器技术(3)

    容器生态系统包含核心技术.平台技术和支持技术三个方面.上一节我们讨论了核心技术,今天讨论另外两个部分. 容器平台技术 容器核心技术使得容器能够在单个 host 上运行.而容器平台技术能够让容器作为集群 ...

  5. Weave Scope 容器地图 - 每天5分钟玩转 Docker 容器技术(80)

    Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解.监控和控制容器.千言万语不及一张图,先感受一下. 下面开始实践 Weave Scope. 安装 执行如 ...

  6. 镜像的分层结构 - 每天5分钟玩转容器技术(11)

    Docker 支持通过扩展现有镜像,创建新的镜像. 实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的.比如我们现在构建一个新的镜像,Docke ...

  7. base 镜像 - 每天5分钟玩转容器技术(10)

    2019独角兽企业重金招聘Python工程师标准>>> 上一节我们介绍了最小的 Docker 镜像,本节讨论 base 镜像. base 镜像有两层含义: 不依赖其他镜像,从 scr ...

  8. 有问有答 | 容器精华问答,如何玩转容器服务?

    戳蓝字"CSDN云计算"关注我们哦! 容器这个词,当你第一眼看它或许脑子里是这东西:瓶瓶罐罐.装水.装其他东西的玩意.不管是什么,总的来说,容器给人第一印象就是--"装& ...

  9. Dockerfile 构建镜像 - 每天5分钟玩转容器技术(13)

    Dockerfile 是一个文本文件,记录了镜像构建的所有步骤. 第一个 Dockerfile 用 Dockerfile 创建上节的 ubuntu-with-vi,其内容则为: 下面我们运行 dock ...

最新文章

  1. The method setButton(int, CharSequence, Message) in the type AlertDialog is not applicable for the a
  2. 2005年上半年 网络工程师 上下午试卷【附带答案】
  3. python和java一样吗-Python和Java的区别
  4. AD不能复制提示目标主要名称不正确
  5. V3S文件系统基本构架
  6. 【机器视觉】 dev_set_line_width算子
  7. pandas处理大数据的一些小技巧
  8. android跌倒检测,Android跌倒检测
  9. 使用nvl就不能groupby了吗_现在的手机大部分都不能换电池,使用1至2年就需要更换吗?...
  10. Linux 命令(86)—— head 命令
  11. Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7:
  12. java02动手动脑
  13. 加好友饥荒服务器没有响应,饥荒进不去别人的服务器 | 手游网游页游攻略大全...
  14. pert计算公式期望值_计划评审技术(PERT)求工期、标准差、方差以及概率
  15. 科研ABC - 文献检索
  16. 工欲善其事必先利其器-SpringBoot源码研究之源码编译
  17. 美国人口与种族变迁史
  18. 通用模块系列--日期操作工具类
  19. 时下火热的 NFT 究竟有什么用?
  20. 【码上实战】【立体匹配系列】经典AD-Census: (1)框架

热门文章

  1. 浅谈Oracle Online redo log
  2. linux suse10虚拟机在静态IP局域网中如何设置桥接上网
  3. 对于访问IIS元数据库失败的解决方案
  4. 观察:Android与潮流一起,机遇无处不在
  5. 蓝牙MESH网关_水哥智能教学视频一米家蓝牙mesh设备如何升级固件
  6. 缓存区溢出漏洞工具Doona
  7. matlab播放视频语句,matlab语句
  8. 拦截器获取请求参数post_「SpringBoot WEB 系列」RestTemplate 之自定义请求头
  9. 指定的网络文件夹目前是以其他用户名和密码进行映射的_使用 GitLab CI 与 Argo CD 进行 GitOps 实践
  10. python生成器使用场景桌面_Python – 如何更简洁地使用生成器?