容器技术Docker、Docker-Compose、k8s的演变

本文介绍了容器技术从Docker到Docker-Compose,再到k8s(Kubernetes)的演变过程。Docker解决了虚拟机资源浪费的问题,Docker-Compose用于多容器管理,而k8s则提供了集群管理和智能自动化编排,包括快速部署、智能缩扩容、自愈、负载均衡和滚动升级等功能。

  越来越多的应用开始容器化以及上云,可能有些人直接接触的就是k8s(Kubernetes)的概念以及操作了,但是理清一下容器化技术的一些演变过程,是一件很有意思的事情,同时也可以加强我们对容器化技术的深入理解和具体场景下运用哪种技术。

一、Docker vs 虚拟机

  KVM技术的发展,解放了单台服务器物理机的资源过剩的浪费,虚拟机的资源互相独立,部署应用不受影响,但缺点是占用资源多,有安全补丁更新时候要一起更新,管理起来比较麻烦。容器Docker就是为了解决这种困境,在耗费资源低的情况下,又可以方便部署资源和依赖互相独立的应用,从而实现快速部署。他们俩的层级差异如图:

在这里插入图片描述
在这里插入图片描述
  正如docker的鲸鱼图上的集装箱一样,docker的容器运行是以沙盒的机制运行,共享底层操作系统,会把应用需要的依赖打包在一起,以沙盒的方式,在同类型的操作系统上,可以自由迁移部署运行,如此就可以极大地解放了部署环境不一致的问题。

二、Docker-Compose 的诞生

  容器化的盛行,也带来了新的问题,那就是如何高效地去部署和管理这些镜像呢?因为比较大型的应用服务,往往需要多个组件一起合作才能正常运行,这就给单docker容器部署提出了挑战,Docker-Compose就像下面这只八爪章鱼,可以同时进行多容器的构建以及部署运行。

在这里插入图片描述

三、k8s(Kubernetes)的横空出世 vs Docker Swarm

  Docker和Docker-Compose的运用,充分地把单物理服务器的性能充分利用起来,并且可以快速地进行持续交付。但是如何把如下图中A机器的容器镜像迁移到其他服务器以及如果遇到高并发,如何进行负载均衡分流呢?

在这里插入图片描述
  重复地拷贝一下镜像到B服务器再运行?那如何高效地进行监控各个容器的健康运行情况以及崩溃后如何迁移服务呢?集群的管理问题,此时出现了Docker Swarm技术,是docker自家的技术,但是Google接着开源了其内部用了很久的容器治理编排工具Kubernetes,以其高效以及智能自动化的管理机制,吸引了大批开源开发者以及公司的青睐,从此一战成名,Docker Swarm的市场份额进一步低迷。故这里只介绍下k8s主要的原理以及解决了哪些痛点的问题。

在这里插入图片描述
  k8s就像一个领航员,把各种集装箱(container)有条不紊地组装起来,着重提供如下功能:
1.快速部署功能:定义对应的charts,可以方便把大型的应用部署上去。
2.智能的缩扩容机制:部署时候会自动去考虑容器应该部署在哪个服务器上,以及副本的数量可以自定义。
3.自愈功能:某个节点的服务崩溃了,可以自动迁移到另外一个服务器节点来恢复来实现高可用。
4.智能的负载均衡:利用Ingress,可以实现流量通过域名访问进来时候,进行流量的分流到不同服务器上。
5.智能的滚动升降级:升级或者降级时候,会逐个替换,当自定义数量的服务升级OK后,才会进行其他的升级以及真正销毁旧的服务。
。。。

四、几种技术的应用场景及资源占用情况

技术应用场景资源占用情况
Docker单机部署简单应用
Docker-Compose单机/少数机器部署应用
k8s集群部署高可用应用

原创文章,欢迎转载,转载请注明:ifish.site

作者:JaydenZhou

参考文档:

Docker常用命令 https://ifish.site/docker_01.html

Docker百度百科 https://baike.baidu.com/item/Docker/13344470?fr=aladdin

干货满满!10分钟看懂Docker和K8S https://my.oschina.net/jamesview/blog/2994112

Docker及Docker-Compose的使用 https://www.jianshu.com/p/ca1623ac7723

### Docker ComposeKubernetes 的比较 Docker Compose 是一种用于定义和运行多容器 Docker 应用程序的工具。通过单个 YAML 文件配置应用程序服务,然后使用 `docker-compose` 命令启动所有服务[^1]。 Kubernetes (简称 K8s) 则是一个更复杂的平台,旨在自动化部署、扩展以及管理容器化应用。它提供了强大的功能集来处理大规模集群环境中的工作负载调度和服务发现等问题。 #### 功能对比 - **复杂度** - Docker Compose 更适合小型项目和个人开发者快速搭建开发测试环境;而 Kubernetes 需要更多学习成本和技术投入。 - **可伸缩性和高可用性** - 对于生产环境中需要高度可靠性的微服务架构来说,Kubernetes 提供了更好的支持,包括自动重启失败的服务实例、水平扩容等功能. - **网络与存储插件生态** - Kubernetes 支持多种第三方提供的高级特性如持久卷(Persistent Volumes),这使得状态保存更加灵活;相比之下,Docker Compose 主要是基于主机文件系统的简单映射. - **监控和日志聚合** - Kubernetes 内置了一系列机制帮助管理员收集并分析集群内的性能指标及错误信息.对于大型分布式系统而言非常重要. ```yaml version: '3' services: web: image: nginx ports: - "80:80" ``` 上述代码展示了如何利用 Docker Compose 创建一个简单的 Nginx 容器服务. #### 使用场景 当面对不同的业务需求时: - 如果只是希望简化本地开发流程或是构建相对独立的小型Web应用,则可以选择 Docker Compose 来实现; - 当涉及到跨多个节点部署大量相互依赖的应用组件,并且追求更高的稳定性和灵活性时,应该考虑采用 Kubernetes 平台来进行管理和运维操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JaydenZhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值