容器生态系统
容器生态系统包含核心技术、平台技术和支持技术。
1-1 容器核心技术
其中容器核心技术指的是能让容器在主机服务器上运行的技术,包含容器规范
、容器 runtime
、容器管理工具
、容器生态工具
、registries
、容器 OS
。
- 容器规范: 容器除了常见的
Docker
外,还有其他的容器,例如Podman
、rkt
为了保证不同容器之间可以兼容,各大公司联合制定了OKI
(开放容器规范协议),规定了两个规范runtime spec
、image format spec
、旨在解决容器运行时规范问题和镜像格式的规范问题。 - 容器 runtime:
runtime
是容器真正的运行的地方,runtime
需要跟操作系统kernel
紧密限制。 - 容器管理工具: 我们通过容器管理工具来和
runtime
交互,对外提供interface
- Lxd:Linux容器守护程序允许用户创建和管理系统容器,这些容器可以运行独立的Linux发行版,并共享宿主系统的内核。Lxd提供了一种更接近传统虚拟机的容器化体验,它具有更强大的隔离性和管理功能,可用于部署和管理应用程序。
- docker engine:
- daemon: Docker守护程序是在主机上运行的后台服务,负责管理容器的创建、启动、停止和销毁等任务。它还负责与Docker镜像和容器的存储、网络和卷相关的操作。
- cli: Docker CLI是用于与Docker守护程序进行交互的命令行工具。它允许用户通过命令行命令来管理容器、镜像和其他Docker资源。
- rkt cli: rkt CLI是用于与rkt容器运行时进行交互的命令行工具。
- 容器定义工具: 容器定义工具允许用户定义容器的内容和属性,这样容器就能够被保存、共享和重建。常见的容器定义工具有
docker image
、dockerfile
、ACI
- docker image:
docker image
是 docker 容器的模版,Docker镜像是Docker容器的构建块,容器是从镜像创建的实例。一般通过docker pull
从容器镜像仓库拉取容器。 - Dockerfile: Dockerfile是一个文本文件,其中包含了一组指令和配置,用于构建Docker镜像。Docker镜像是用于创建Docker容器的模板,Dockerfile指定了如何构建这个模板。
- ACI: 类似于 RKT 容器的
image
。
- docker image:
- 容器仓库: 存放镜像
**image**
的地方叫做仓库registry
、仓库分为企业构建 Docker registry
、Docker hub
、Quary.io
。三个类型。其中企业私有构建的更具备安全性和私密性。
1-2-容器平台技术
容器的平台技术能够让容器以集群的形式在分布式的环境中运行。容器平台技术包括容器编排引擎
、容器管理平台
、基于容器的 PaaS
。
容器编排引擎(Container Orchestration Engine)指的是是用于管理、调度和协调容器化应用程序的工具或平台。它们在容器集群中自动化各种任务,如容器的部署、伸缩、负载均衡、服务发现、容错性等,以确保应用程序能够高效地运行并保持可用性。常见的容器编排引擎有Kubernetes
、Docker Swarm
、Apache Mesos
、Amazon ECS
等。
容器管理平台指的是是架构在容器编排引擎之上的一个更为通用的平台。可以支持多种编排引擎,可以用于在大规模容器集群中实现高效的容器编排和管理。常见的容器管理平台有Docker Desktop
、Rancher
、OpenShift
。
基于容器的 PaaS 指的是一种云计算服务模型,它结合了容器技术和PaaS的概念,提供了一种用于构建、部署和管理应用程序的平台。
1-3-容器支持技术
容器支持技术指的是支持容器的基础设施,保障容器的正常功能运行,包含容器网络
、服务发现
、监控
、数据管理
、日志管理
、安全性
。
容器网络: 服务器内部之间架构容器,要求我们对网络的掌握更加熟练,来保证容器与容器、容器与其他服务器之间的联系,比较常见的容器解决方案有Docker network
、flannel
、weave
、calico
。
服务发现: 微服务的一大特点是动态发现,动态发现是微服务架构中的一个重要特点,它指的是在运行时自动地发现和注册微服务实例的能力。这使得微服务可以动态地加入和离开系统,而无需手动配置或硬编码依赖关系。动态发现有助于应对微服务的可伸缩性、弹性和高可用性需求,因为新的微服务实例可以轻松地添加到集群中,而故障的实例可以自动从系统中移除。这种功能的实现一般需要使用到容器编排工具
、服务发现工具
等来配合使用。
监控: 容器的动态发现对监控提出了更高的要求,Docker 提供了原生的命令行监控工具,docker ps
、docker top
等,除此之外还有一些stats API
及其他的容器监控解决方案供我们选择。
除此之外的数据管理、日志管理、安全性在日常的工作中也比较常见,可以多多关注。