Docker容器有什么技术

70次阅读
没有评论

共计 4100 个字符,预计需要花费 11 分钟才能阅读完成。

本篇内容介绍了“Docker 容器有什么技术”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

容器技术是操作系统层面的一种虚拟化技术。在 Linux 系统下,容器能够利用 Namespaces、AppArmor、SELinux 配置、Chroot 以及 CGroups 等内核功能,交付一套类似于虚拟机的隔离性环境。经过不断的发展,容器技术所带来的轻量级、隔离性、标准化以及可大规模部署的特性促生了微服务和云原生应用的普及和发展。

Docker 容器

毫无疑问,Docker 是目前最具人气且应用最为广泛的容器技术。为什么呢?作者总结了以下主要的两个原因。

1、和早期容器技术不同,Docker 不只是针对了应用对主机资源的共享和隔离,它更加关注应用的微服务化,大规模部署和管理自动化。微服务和云原生应用的发展极大的提高了 Docker 技术的大众接受程度。

Docker 所采用的分层镜像模型让 Docker 对应用环境的封装更加轻量级和标准化,让镜像更加容易的共享和分发,极大的简化了大规模部署和运维的难度。

Docker 镜像模型的 Copyon Write 机制和 Volume 机制合理的满足和促进了应用的无状态化和微服务化。

Docker 提倡一个应用(进程)一个容器,符合微服务的理念。

2、Docker 不只是一个工具包,围绕它的是一整套生态系统。包括镜像库、容器管理调度、网络、存储、安全。这一整套生态系统让应用采用容器技术进行大规模的封装,部署,运维,管理成为可能。

容器的特性如何在生产环境中发挥所长,还需要其生态圈中一系列的工具、产品和方案作以支撑。以下我们会对 Docker 以及它代表的容器技术生态系统做进一步的介绍。

容器生态圈

下图中的内容就是容器生态圈中的各个组件,我们将会从下至上逐一分层解析。

 

1、容器 OS

容器 OS 并不是运行容器的必要条件,容器也可以运行在通用 Linux 中。大部分的容器 OS 即为 Linux OS 的精简版。相比大而全的 Linux OS,容器 OS 如 RancherOS、CoreOS、Redhat Atomic、Ubuntu Core、VMware Photon 具有更加轻量,占有资源更少的特征,适合于更加标准化的数据中心和 IOT 的一些领域。同时,Microsoft 也于 2015 年推出 Windows Nano Server,并将其作为 Windows2016 的安装选项,其大小相比完整的 Windows2016 部署缩小了 90% 以上。

2、容器引擎

容器引擎负责容器应用的隔离和资源共享。它驱动和管理主机上所有的容器, 并且包括了容器卷管理、容器网络管理、容器配置、镜像管理以及容器日志。容器生态圈中容器引擎主要有两个标准 OCI 和 AppC,两个引擎 Docker 和 RKT。以下是一张对比表:

 

3、容器存储

容器中一般运行是无状态应用。对于有状态应用,应用的数据持久化就需要容器存储的支持。Docker 为了支持第三方存储方案,在 1.8 版本引入 Volume Plugin 机制。Flocker 作为 Volume Plugin,需要和第三方外部存储结合使用为容器提供持久化存储,同时也屏蔽掉第三方存储系统的差异,类似 Cinder 在 OpenStack 中的位置。而 Torus(项目已于 2017 年 2 月停止开发,“Developmenton Torus at CoreOS stopped as of Feb 2017”引用自 Github Torus 项目说明)和 Comet(有容云)作为独立的分布式存储系统,可直接为容器提供完整的数据存储服务。 

Comet 存储系统作为国内少有的自主研发分布式系统,除了针对容器特性进行性能优化外,也提供了多级数据保护,应用感知等企业级存储特性。

 

4、容器网络

容器网络解决容器在大规模部署后的互联互通的问题。主要有 Docker 原生的 CNM 容器网络模型和 CoreOS 支持的 CNI 容器网络模型。除了 Docker 原生的 Libnetwork 网络方案,在容器网络生态圈中,有以下几种商业容器网络方案。

Flannel 是 CoreOS 为 Kubernetes 设计的基于 CNI 模型的网络方案。它让各个容器采用 UDP Overlay 或者 Vxlan 的方式互联,并且让集群中的不同节点主机创建的容器都具有全集群唯一的虚拟 IP 地址。

Weaver 和 Flannel 在很多方面比较类似。但是 Weaver 采用 Name Service 的方式来进行 IP 分配管理,不需要一个全局的 Kv Store。

Calico 是一个纯三层网络,采用 BGP 的技术来进行路由交换。由于不像其他几个网络模型一样需要封包,它的性能相对最优。

 

5、镜像仓库

镜像仓库提供了镜像的存储、及 pull/push 的服务。仓库分为公有仓库(如 Docker Hub、Quay)和私有仓库(如 AppHouse、Harbor)两种形式。最大的公有仓库是 Docker Hub,即 Docker 官方的镜像仓库。由于网络访问限制的原因,或企业用户对数据安全性考虑的原因,也可以在企业私有数据中心建立私有镜像仓库,可通过部署 AppHouse(有容云) 或者 Harbor 来实现。

部署镜像仓库需要考虑的是镜像存储的安全性和系统的容错性。可分别通过搭建企业级存储系统或分布式存储系统来保障镜像数据的完整性,并选择具有高可用特性的镜像仓库进行实施和部署。

 

6、容器安全

容器缺少一个像虚拟机所拥有的安全边界。容器的快速迁移,升级和部署的特性也带来了新的安全隐患。容器安全可分为镜像安全和容器运行时安全。

 

 

 

Clair 是 CoreOS 开源的容器镜像安全分析器,具有镜像安全扫描和提供修复建议的功能,目前也已有多个厂家将其集成在自身的容器平台中。

 

TwistLock 在镜像扫描和容器运行时都有防护方案。Aqua 的 CSP 在 2017 年 2 月也发布了 2.0 版本,官方表示将和 Kubernetes 会有更好的结合。

 

AppSafe 是国内容器厂家有容云推出的容器安全产品,针对容器进行智能安全策略配置,并可根据配置策略进行实时防护。

 

7、容器编排

容器平台是容器应用大规模部署,升级和运维的管理平台。容器的编排和资源调度是容器平台的核心功能。容器平台也提供服务发现、运行监控、扩容缩容、负载均衡、灰度升级、故障冗余等功能。

 

 

 

8、运维

容器平台运行和管理着成千上万的容器及应用。如何能从资源(主机、容器)纬度和应用的纬度来及时监控和日志收集,也成为容器进入生产环境绕不开的话题。目前容器的监控和日志方案分为开源方案和 SaaS 服务两种:

ELK 日志分析系统由三个开源工具 Elasticsearch+Logstash+Kibana 组成,分别对应搜索、数据采集和展示的功能,是一套较成熟的日志方案,有公司基于此方案提供日志 SaaS 服务。基于容器的日志监控通常为 EFK(Elasticsearch+Fluentd+Kibana),通过占用内存较少的 Fluentd 替代 Logstash,来满足容器平台更大规模更密集的日志收集需求。

Heapster 是一个开源的容器集群监控和性能分析工具,原生支持 Kubernetes 和 CoreOS。一般通过 Heapster+InfluxDB+Grafana 来实现基于 Kubernetes 的监控方案,来完成数据收集、存储及展示的功能。

Zabbix 是一个较成熟的开源分布式监控系统。在非容器场景中已被大量使用,Zabbix 由服务器端的 Server 和被监控端的 Agent 组成,通过丰富的模板可自定义需要收集的数据和展示形式。基于容器的 Zabbix 监控方案需要考虑到 Agent 的部署方式及容器的视图展示方式。

Prometheus 是一款开源的监控工具,也是在容器平台中使用较多的一种监控方案,相对于 Heapster,Prometheus 提供的查询 API 功能更加强大,可以基于 Label 来实现复杂查询,适合有一定技术能力的团队使用。

Data Dog 提供基于容器监控的 SaaS 服务,在被监控主机上运行 Agent 即可接受 Data Dog 的监控,视图简单、使用方便,其 Monitors 提供可自定义阈值的告警服务,但成本较高。

CAdvisor 是针对单主机的免费且开源的容器监控工具,可用于监控容器当前的资源使用率及性能情况。CAdvisor 简单易用,但容器平台中需要和其他开源工具或产品结合使用,且自身无报警功能。CAdvisor 已集成在 Kubernetes 中。

Mesos 是 Apache 下的开源分布式资源管理框架。基于 Mesos 之上可以运行不同的分布式计算平台,如 Spark、Storm、Hadoop、Marathon。Mesos+Marathon 可以用来管理大规模的容器集群。

Kubernetes 是一个以 Google Borg 为原型的开源项目。可实现大规模、分布式、高可用的容器集群。目前国内大部分容器厂家产品都是基于 Kubernetes 进行二次开发和方案封装,这里暂不赘述。

Swarm 是 Docker 的原生集群工具,Swarm 使用标准的 Docker API 来管理容器集群。

容器运行时风险:容器运行时风险来自于多方面,对外提供服务的容器会收到 DDOS 攻击,从而导致主机上的所有容器出现资源不足;容器使用不当会导致主机 Root 权限泄漏;使用者权限过高会通过容器对主机文件修改导致系统崩溃;数据卷共享导致主机上容器对数据篡改等。目前已有用户开始关注容器安全的问题,同时也有不少厂商也推出了针对容器运行时安全的商业化方案。

镜像安全:使用互联网来历不明的镜像、或是从互联网下载不明镜像作为基础镜像、或是制作镜像时对端口和服务开启没有严格的限制和把控、DockerFile 中恶意程序等,都将会导致生成高危漏洞的镜像。对于镜像的安全建议在两阶段进行控制,一是镜像提交到镜像仓库时;一是进行周期的镜像扫描;同时,对于已发布或发现的漏洞风险,进行及时更新。

“Docker 容器有什么技术”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计4100字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)