Docker和K8S的区别

目录

虚拟机化技术:

 容器化部署


虚拟机化技术:

虚拟机,就是在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来 ——> 在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。

虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化

在这里插入图片描述

 缺点:

1.占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare)。

在这里插入图片描述

 容器化部署

我来到一片空地,想建个房子,于是我搬石头、砍木头、画图纸,一顿操作,终于把这个房子盖好了。

 按照以前,我们如果想把房子搬到另外一个地方需要重新搬石头,砍木头,画图纸等等

容器化部署,将我们盖好的房子复制一份,将其作为镜像,放在我的背包,到另外一篇空地利用这个镜像复制一套房子直接入住

在这里插入图片描述

核心概念:1.镜像 2.容器 3.仓库

K8S基于容器的集群管理平台

这个集群主要包括两个部分:

  • 一个Master节点(主节点)
  • 一群Node节点(计算节点)

在这里插入图片描述

 一看就明白:Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。

在这里插入图片描述

Matser:

 API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。

Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

Controller manager负责管理控制器,相当于“大总管”。

Node:

Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口

在这里插入图片描述

Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。这段不太好理解,跳过吧。

Docker,不用说了,创建容器的。

Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

Kube-proxy,主要负责为Pod对象提供代理。

Fluentd,主要负责日志收集、存储与查询。

 

 

### DockerKubernetes的主要区别及使用场景 DockerKubernetes在软件开发部署中扮演了不同的角色,其主要区别可以从技术功能、目标用途以及适用场景等方面进行分析。 #### 1. 技术功能差异 Docker是一种容器化技术,专注于将应用程序及其依赖打包成容器镜像,并提供一种标准化的方式运行这些容器[^1]。它通过隔离环境确保应用在不同环境中的一致性运行。相比之下,Kubernetes则是一个容器编排平台,旨在管理自动化容器的部署、扩展监控。Kubernetes可以调度多个Docker容器到集群中的不同节点上,并确保它们高效运行[^2]。 #### 2. 目标用途差异 Docker的目标是简化应用程序的打包运行过程,适用于开发者运维工程师快速构建、测试部署单个容器化的应用。而Kubernetes的目标则是解决大规模容器化应用的管理问题,适用于需要处理复杂分布式系统的大型企业云服务提供商。Kubernetes提供了更高级的功能,如自动伸缩、负载均衡、自我修复等,这些都是Docker本身无法直接提供的[^3]。 #### 3. 使用场景差异 - **Docker适用场景** Docker非常适合用于开发阶段的本地环境搭建单机上的简单容器化应用部署。例如,在开发人员的笔记本电脑上运行一个数据库容器或Web服务器容器。此外,Docker也可以用于CI/CD流水线中,生成可重复使用的容器镜像。 - **Kubernetes适用场景** Kubernetes更适合于生产环境下的大规模分布式系统。例如,当企业需要管理数百甚至数千个容器时,Kubernetes可以帮助实现自动化部署、动态扩展故障恢复。对于微服务架构的应用程序,Kubernetes能够有效管理多个服务之间的通信资源分配[^4]。 #### 示例代码:创建一个简单的Dockerfile部署到Kubernetes 以下是使用Docker打包一个Python Web应用的示例,并将其部署到Kubernetes集群中。 ```dockerfile # Dockerfile 示例 FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "app.py"] ``` ```yaml # Kubernetes Deployment 示例 apiVersion: apps/v1 kind: Deployment metadata: name: python-app spec: replicas: 3 selector: matchLabels: app: python-app template: metadata: labels: app: python-app spec: containers: - name: python-app image: your-dockerhub-username/python-app:latest ports: - containerPort: 5000 ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fairy要carry

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

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

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

打赏作者

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

抵扣说明:

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

余额充值