容器生态系统-每天5分钟玩转容器技术

山河永慕 山河永慕     2022-08-29     270

关键词:

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

那怎么办呢?


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

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

  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 和 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 是其中的杰出代表。

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




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

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

容器生态系统-每天5分钟玩转容器技术

对于像容器这类平台级别的技术,通常涉及的知识范围会很广,相关的软件,解决方案也会很多,初学者往往容易迷失。那怎么办呢?我们可以从生活经验中寻找答案。当我们去陌生城市旅游想了解一下这个城市一般我们会怎么... 查看详情

写在最前面-每天5分钟玩转容器技术

《每天5分钟玩转容器技术》是一个有关容器技术的教程,有下面两个特点:系统讲解当前最流行的容器技术。从容器的整个生态环境到各个具体的技术,从整体到细节逐一讨论。重实践并兼顾理论。从实际操作的角度带领大家... 查看详情

写在最前面-每天5分钟玩转容器技术

《每天5分钟玩转容器技术》是一个有关容器技术的教程,有下面两个特点:系统讲解当前最流行的容器技术。从容器的整个生态环境到各个具体的技术,从整体到细节逐一讨论。重实践并兼顾理论。从实际操作的角度带领大家... 查看详情

写在最前面-每天5分钟玩转容器技术

 《每天5分钟玩转容器技术》是一个有关容器技术的教程,有下面两个特点:系统讲解当前最流行的容器技术。从容器的整个生态环境到各个具体的技术,从整体到细节逐一讨论。重实践并兼顾理论。从实际操作的角... 查看详情

《每天5分钟玩转容器技术》(转)

《每天5分钟玩转容器技术》《每天5分钟玩转容器技术》 查看详情

运行第一个容器-每天5分钟玩转容器技术

为了让大家对容器有个感性认识,我们将尽快让一个容器运行起来。首先我们需要搭建实验环境。环境选择容器需要管理工具、runtime和操作系统,我们的选择如下:管理工具-DockerEngine因为Docker最流行使用最广泛。runtime-runcDocker... 查看详情

运行第一个容器-每天5分钟玩转容器技术

为了让大家对容器有个感性认识,我们将尽快让一个容器运行起来。首先我们需要搭建实验环境。环境选择容器需要管理工具、runtime和操作系统,我们的选择如下:管理工具-DockerEngine因为Docker最流行使用最广泛。runtime-runcDocker... 查看详情

运行第一个容器-每天5分钟玩转容器技术

为了让大家对容器有个感性认识,我们将尽快让一个容器运行起来。首先我们需要搭建实验环境。环境选择容器需要管理工具、runtime和操作系统,我们的选择如下:管理工具-DockerEngine因为Docker最流行使用最广泛。runtime-runcDocker... 查看详情

走近docker--容器生态系统

本文主要摘自CloudMan的《每天5分钟玩转容器技术》 Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎。根据CloudMan的划分,容器生态系统(containerecosystem)涉及的技术分为:核心技术、平台技术、支持技术。容器核心... 查看详情

视频运行第一个容器-每天5分钟玩转容器技术

这两天制作的视频,安装Docker并运行第一个容器,希望对大家有帮助。可在公众号(cloudman6)回复“容器”查看。 查看详情

实现容器的底层技术-每天5分钟玩转docker容器技术(30)

为了更好地理解容器的特性,本节我们将讨论容器的底层实现技术。cgroup和namespace是最重要的两种技术。cgroup实现资源限额,namespace实现资源隔离。cgroupcgroup全称ControlGroup。Linux操作系统通过cgroup可以设置进程使用CPU、内存和IO... 查看详情

实现容器的底层技术-每天5分钟玩转docker容器技术(30)

为了更好地理解容器的特性,本节我们将讨论容器的底层实现技术。cgroup和namespace是最重要的两种技术。cgroup实现资源限额,namespace实现资源隔离。cgroupcgroup全称ControlGroup。Linux操作系统通过cgroup可以设置进程使用CPU、内存和IO... 查看详情

datavolume之bindmount-每天5分钟玩转docker容器技术(39)

storagedriver和datavolume是容器存放数据的两种方式,上一节我们学习了storagedriver,本节开始讨论DataVolume。DataVolume本质上是DockerHost文件系统中的目录或文件,能够直接被mount到容器的文件系统中。DataVolume有以下特点:DataVolume是目... 查看详情

datavolume之bindmount-每天5分钟玩转docker容器技术(39)

storagedriver和datavolume是容器存放数据的两种方式,上一节我们学习了storagedriver,本节开始讨论DataVolume。DataVolume本质上是DockerHost文件系统中的目录或文件,能够直接被mount到容器的文件系统中。DataVolume有以下特点:DataVolume是目... 查看详情

部署graylog日志系统-每天5分钟玩转docker容器技术(92)

Graylog是与ELK可以相提并论的一款集中式日志管理方案,支持数据收集、检索、可视化Dashboard。本节将实践用Graylog来管理Docker日志。Graylog架构Graylog架构如下图所示:650)this.width=650;"title="https://image.ipaiban.com/upload-ueditor-image-20171109-... 查看详情

容器what,why,how-每天5分钟玩转容器技术

学习任何东西都可以按照3W的框架进行,容器技术也是一样,先回答What、Why和How这三个问题。 What-什么是容器?容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发... 查看详情

容器what,why,how-每天5分钟玩转容器技术

学习任何东西都可以按照3W的框架进行,容器技术也是一样,先回答What、Why和How这三个问题。 What-什么是容器?容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发... 查看详情