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

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

那怎么办呢?docker


咱们能够从生活经验中寻找答案。
当咱们去陌生城市旅游想了解一下这个城市通常咱们会怎么作?ubuntu

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

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

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

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

一样的道理,学习容器技术咱们能够先从天上鸟瞰一下:操作系统

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

  2. 不一样技术之间是什么关系?orm

  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 和 image 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 image 是 docker 容器的模板,runtime 依据 docker image 建立容器。

dockerfile 是包含若干命令的文本文件,能够经过这些命令建立出 docker image。

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

Registry

容器是经过 image 建立的,须要有一个仓库来统一存放 image,这个仓库就叫作 Registry。

企业能够用 Docker Registry 构建私有的 Registry。

Docker Hub(https://hub.docker.com) 是 Docker 为公众提供的托管 Registry,上面有不少现成的 image,为 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 是其中的杰出表明。

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

二维码+指纹.png

相关文章
相关标签/搜索