每天学一点Docker(2)

容器runtime

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

比如说,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交互,对外为用户提供interface.

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 格式。

仓库Registy

容器是通过image创建的,需要一个仓库统一存放image,这个仓库就叫做Registy

 企业可以用 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,CoreOS、atomic 和 ubuntu core 是其中的杰出代表。

容器平台技术

容器核心技术能够让让容器在单个主机上运行,容器平台技术能够让容器作为集群在分布式环境中运行。容器平台技术如下图:

分为容器编排技术、容器管理平台、基于容器的PaaS。

容器编排引擎

基于容器的应用一般会采用微服务架构。在这中间架构下,应用被划分成不同的组件,并以服务的方式运行在各个容器中,通过API对外提供服务,为了保证服务的高可用,每个组件会运行多个相同的容器。

这些容器会组成集群,集群中的容器会根据业务动态的创建、迁移和销毁。

这样基于微服务架构的系统实际上是一个动态可伸缩的系统。容器编排引擎就排上用场了。

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

docker swarm 是 Docker 开发的容器编排引擎。 kubernetes 是 Google 领导开发的开源容器编排引擎,同时支持 Docker 和 CoreOS 容器。 mesos 是一个通用的集群资源调度平台,mesos 与 marathon 一起提供容器编排引擎功能。 以上三者是当前主流的容器编排引擎。

容器管理平台

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

比如:application catalog和一键应用部署

Rancher和Containership是容器管理平台的典型代表

容器支持技术

 容器网络

 容器使得网络变得复杂,用户需要专门的解决方案来管理容器与容器,容器与其他实体之间的连通性和隔离性。

docker network是docker原生的解决方案。

服务发现

微服务的最大特点是动态变化,当负载增加时,集群会自动创建新的容器;负载减小,多余的容器就会被销毁。容器也会根据主机的资源情况在不同主机上迁移,容器的IP和端口也随之改变。

在这种情况下,必须要让客户端能够知道如何访问容器提供的服务。这就是服务发现的工作。

服务发现会保存集群中所有微服务的最新信息,比如IP和端口,对外提供的API,提供服务和查询等。

比较主流的是etcd,consul,zookeeper。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏沈唁志

什么是Docker?Docker的快速入门教程

Docker 从2013年发布至今, 许多人并不清楚 Docker 到底是什么,要解决什么问题,好处又在哪里?

9430
来自专栏美团技术团队

【美团技术博客】Docker 入门介绍

Docker简介 ---- Docker是DotCloud开源的、可以将任何应用包装在Linux container中运行的工具。2013年3月发布首个版本,当...

523120
来自专栏惨绿少年

Docker 容器入门

1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件...

60290
来自专栏美团技术团队

Docker 入门介绍

Docker简介 ---- Docker是DotCloud开源的、可以将任何应用包装在Linux container中运行的工具。2013年3月发布首个版本,当...

35780
来自专栏小樱的经验随笔

这可能是最为详细的Docker入门吐血总结

在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是十分普遍的,甚至成为了一些企业面试的加分项,不...

2.8K100
来自专栏Laoqi's Linux运维专列

Docker 空间使用分析与清理

54440
来自专栏北京马哥教育

Docker 入门教程

几个月以前,红帽(Red Hat)宣布了在 Docker 技术上和 dotCloud 建立合作关系。在那时候,我并没有时间去学习关于 Docker 的知识,所以...

38170
来自专栏Laoqi's Linux运维专列

Docker 基础配置安装(Ⅰ)

17980
来自专栏大魏分享(微信公众号:david-share)

如何有效地对Docker的镜像进行管理?

容器的存储空间如何提供? 前段时间,笔者看到一篇文章,题目是“容器就是Linux”,写的不错。容器说简单点就是容器级别的虚拟化,在一个Kernel Space...

47360
来自专栏编程坑太多

『中级篇』docker 使用bind Mounting实战(36)

PS:通过这个例子我想到了,我做java开发的可以吧对应的tomcat里面的webapp下的关联容器外部,容器内就跑tomcat 连接容器外的文件app 就可以...

15760

扫码关注云+社区

领取腾讯云代金券