走近docker--容器生态系统

xiaochuizi xiaochuizi     2022-12-20     301

关键词:

本文主要摘自CloudMan的《每天5分钟玩转容器技术》

 

Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎。

根据CloudMan的划分,容器生态系统(container ecosystem)涉及的技术分为:核心技术、平台技术、支持技术。

容器核心技术使得容器能够在单个host上运行。二容器平台技术能够让容器作为集群在分布式环境中运行。

一、核心技术

指能够让container在host(物理机)上运行起来的一类技术,如下图:

技术分享图片

1. 容器规范

Docker、CoreOS、Google等公司共同成立了一个叫OCI(Open Container Initiative)的组织,制定开放的容器规范。

目前已发布两个规范:runtime spec和image format spec。

2. 容器runtime

如其名,runtime是容器真正运行的地方。它和container的关系好比JVM和java的关系。目前主流的三种容器runtime为:lxc、runc、rkt。

lxc: linux上的老牌容器runtime。docker最初也用lxc作为runtime。

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

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

3. 容器管理工具

容器管理工具对内与runtime交互,对外为用户提供interface。

lxc的管理工具是lxd。

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

rkt的管理工具是rkt cli。

4. 容器定义工具

用户通过容器定义工具定义容器的内容和属性,使得能够保存、共享、重建容器。

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

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

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

5. Registry

Registry是一个统一存放image的仓库。

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

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

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

6. 容器OS

容器OS是专门运行容器的操作系统(虽然由于有容器runtime的存在,几乎所有系统都可以运行容器)。与常规OS相比,容器OS通常体积更小,启动更快。

杰出代表有:CoreOS、atomic、ubuntu core。

 二、容器平台技术

容器平台技术能够让容器作为集群在分布式环境中运行,包括:容器编排引擎、容器管理平台、基于容器的PaaS。

1. 容器编排引擎

基于容器的应用一般会采用微服务架构,应用被划分为不同组件,并以服务的形式运行在各自的容器中,通过API对外提供服务。(每个组件都可能会运行多个相同的容器)

所谓编排(orchestration),通常包括容器管理、调度、集群定义和服务发现等。通过编排引擎,容器被邮寄的组合成微服务应用,实现业务需求。

主流容器编排引擎:

1)docker swarm 是Docker开发的容器编排引擎。

2)kubernetes是Google领导开发的开源容器编排引擎,同时支持Docker和CoreOS。

3)mesos是一个通用的集群资源调度平台,mesos与marathon一起提供容器编排引擎功能。

2. 容器管理平台

容器管理平台是架构在容器编排引擎之上的更为通用的平台。通常容器管理平台能够支持多种编排引擎,抽象了编排引擎的底层实现细节。

为用户提供更方便的功能,如:application catalog和一键应用部署等。

容器管理平台的典型代表:Rancher和ContainerShip。

3. 基于容器的PaaS

基于容器的PaaS为微服务应用开发人员和公司提供了开发、部署和管理应用的平台,使用户不必关心底层基础设施而专注于应用的开发。

代表:Deis、Flynn、Dokku。

三、容器支持技术

技术分享图片

1. 容器网络

容器的出现使网络拓扑变得更加动态和复杂,用户需要专门的解决方案来管理容器与容器,容器与其它实体间的连通性和隔离性。

docker network是Docker原生的网络解决方案。其它第三方开源解决方案:flannel、weave、calico。

2. 服务发现

服务发现会保存容器集群中所有微服务最新的信息(如:IP和端口),并对外提供API,提供服务查询功能。

典型解决方案:etcd、consul、zookeeper。

3. 监控

docker ps/top/stats是Docker原生的命令行监控工具。Docker也提供stats API,用户可以通过HTTP请求获取容器的状态信息。

其它开源方案:sysdig、cAdvisor/Heapster、Weave Scope。

4. 数据管理

容器经常会在不同的host之前迁移,需要保证持久化数据也能够动态迁移。

典型代表:Flocker。

5. 日志管理

docker logs是Docker原生的日志工具。

logspout对日志提供了路由功能,可以收集不同容器的日志并转发给其它工具进行后处理。

6. 安全性

OpenSCAP能够对容器镜像进行扫描,发现潜在漏洞。

 

docker生态系统

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

docker

...建,到处执行;容器都非常轻量;容器的创建速度更快。DockerDocker并不等于容器(Container)Docker是以容器技术为核心的一套应用的构建,分发,执行的体系和生态。Docker生态的组成部分DockerEngineDockerHubDockerMachineD 查看详情

容器生态系统(续)

...器被有机的组合成微服务应用,实现业务需求。   dockerswarm是Docker开发的容器编排引擎。kubernetes是Google领导开发的开源容器编排引擎,同时支持Docker和CoreOS容器。mesos是一个通用的集群资源调度平台,mesos与marathon一起提供... 查看详情

云原生第二篇--容器管理工具docker生态架构及部署(代码片段)

容器管理工具Docker生态架构及部署一、Docker生态架构1.1DockerContainersAreEverywhere1.2生态架构1.2.1DockerHost1.2.2Dockerdaemon1.2.3Registry1.2.4Dockerclient1.2.5Image1.2.6Container1.2.7DockerDashboard1.3Docker版本二、Docker部署2.1使用YUM源部署2.1.1获取阿里云开... 查看详情

docker初识

Docker=Container(容器)?X容器与虚拟机,系统级的虚拟化和硬件虚拟化容器与虚拟机相比的三个主要特点:1不可变的特性(通过定义dockerfile一次构建,到处执行),2轻量,3创建速度更快Docker是什么?Docker是以容器技术为核心的一... 查看详情

有容云干货-容器系列补脑专用,容器生态圈脑图大放送

...部署的特性促生了微服务和云原生应用的普及和发展。 Docker容器毫无疑问,Docker是目前最具人气且应用最为广泛的容器技术。为什么呢?作者总结了以下主要的两个原因。 1、和早期容器技术不同,Docker不只是针对... 查看详情

每天5分钟玩转容器技术整理目录

...术(5)容器What,Why,How-每天5分钟玩转容器技术(6) Docker架构详解-每天5分钟玩转容器技术(7)Docker组件如何协作?- 查看详情

不得不知的容器生态圈发展趋势

Docker于2013年推出以来,给软件开发带来了极具传染性的振奋和创新,并获得了来自各个行业、各个领域的巨大的支持——从大企业到初创公司,从研发到各类IT人员,还有开源社区、ISV、最大的公共云供应商、软件堆栈上的每个... 查看详情

云原生生态圈:docker核心技术全面总结(代码片段)

...f01;大家一起学习,一起进步。本文将分别讲解什么是Docker,如何安装Docker,Docker的镜像操作,Docker容器操作,以实战为线索,逐步深入Docker相关知识,打造完整的Docker学习体系,可查阅,可复... 查看详情

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

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

docker入门

Docker入门Docker入门Docker定义DockerVSVMDocker生态系统Docker应用场景Docker技术架构Docker工作方式附录Docker定义Dockerisaplatformfordevelopersandsysadminstodevelop,ship,andrunapplications.1.不是容器,是管理容器的引擎2.不是虚拟化技术,是基于... 查看详情

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

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

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

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

openshift部署流程介绍(代码片段)

...nshift是一个开源容器云平台,是一个基于主流的容器技术Docker和Kubernetes构建的云平台。Openshift底层以Docker作为容器引擎驱动,以Kubernetes作为容器编排引擎组件,并提供了开发语言,中间件,DevOps自动化流程工具和webconsole用户界... 查看详情

从 Docker 容器连接到主机上的服务的规范方法

】从Docker容器连接到主机上的服务的规范方法【英文标题】:CanonicalWaytoConnecttoServiceonHostfromDockerContainer【发布时间】:2015-01-1805:44:36【问题描述】:在SO上有一些类似的问题,例如thisone,但据我所知,Docker生态系统自从被问到... 查看详情

从docker到kubernetes

...的PaaS创业公司dotCloud,却选择了开源自家的一个容器项目Docker,正好提供了一种非常便利的打包机制,然后就一发不可收拾,围绕着Docker项目进行集成与创新涌现出来,包括Mesosphere公司的Mesos项目等等,Docker公司也顺势推出了Doc... 查看详情

docker容器的文件系统管理

Docker容器的文件系统管理一、查看当前运行的容器1.查看当前运行的容器2.查看宿主机中容器挂载的目录二、查看容器的具体信息三、Docker相关信息存储位置1.docker存放的总目录2.web02容器的解析文件路径3.web02容器的id名文件4.web02... 查看详情

docker,容器,编排,和基于容器的系统设计模式(代码片段)

目录从容器说起背景docker实现原理编排之争基于容器的分布式系统设计之道单节点协作模式Sidecarpattern(边车模式)Ambassadorpattern(外交官模式)Adapterpattern(适配器模式)多节点协作模式都2020年了,容器,或者说docker容器这个... 查看详情