(转)Docker与K8S的区别
1 定义角度
-
Docker
是一种开放源码的应用容器引擎,允许开发人员将其应用和依赖包打包成可移植的容器/镜像
中;然后,发布到任何流行的 Linux 或 Windows 机器上,也能实现虚拟化。该容器完全使用沙箱机制,彼此之间没有任何接口。 -
k8s
,全称kubernetes
,是一种开放源码的容器集群管理系统,能够实现自动化部署、自动化扩缩容器集群、维护等功能;同时提供完善的管理工具,涵盖了开发、部署、测试、运行监控等各个环节。
2 虚拟化角度
虚拟化技术的发展过程
虚拟化技术已经走过了三个时代(物理机时代
-->虚拟机时代
-->容器化时代
),没有容器化技术的演进就不会有 Docker 技术的诞生。
物理机时代:多个应用程序可能会跑在一台机器上
虚拟机时代:一台物理机器安装多个虚拟机(VM),一个虚拟机跑多个程序。
容器化时代:一台物理机安装多个容器实例(container),一个容器跑多个程序。
开发人员编写代码,在自己本地环境测试完成后,将代码部署到测试或生产环境中,经常会遇到各种各样的问题。明明本地完美运行的代码为什么部署后出现很多 bug,原因有很多:不同的操作系统、不同的依赖库等,总结一句话就是因为本地环境和远程环境不一致。
容器化技术正好解决了这一关键问题,它将软件程序和运行的基础环境分开。开发人员编码完成后将程序打包到一个容器镜像中,镜像中详细列出了所依赖的环境,在不同的容器中运行标准化的镜像,从根本上解决了环境不一致的问题。
虽然容器概念已经出现不短的时间,但 2013 年推出的开源项目 Docker 在很大程度上帮助推广了容器这项技术,并推动了软件开发中容器化和微服务的趋势,这种趋势后来被称为云原生开发。
Virtual Machines VS. Docker
上图是Docker容器(可用k8s管理的玩意儿)与传统虚拟化方式的不同之处:
- 传统的虚拟化技术,在将物理硬件虚拟成多套硬件后,需要再每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序。
- Docker容器,容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核,显然比传统虚拟机更轻便。
- 每个集群有多个节点,每个节点可以部署多个Docker容器(container)。
3 部署角度
注意,大家别把这幅图与上面Docker的那张图混淆了
- 图1是从
虚拟化角度
,说明了为应用提供必要的运行环境所需要做的虚拟化操作。即:
传统
:虚拟出的虚拟机装操作系统Docker
:容器引擎管理下的容器
- 图2是在这些具体运行环境上进行真实应用部署时的情况
传统方式
是将所有应用直接部署在同一个物理机器节点上,这样每个App的依赖都是完全相同的,但无法做到App之间隔离。当然,为了隔离,我们也可以通过创建虚拟机的方式来将App部署到其中(就像图1上半部分那样),但这样太过繁重,故比虚拟机更轻便的Docker技术出现。
- Docker 容器化技术
现在我们通过部署
Container
容器的技术来部署应用,全部Container运行在容器引擎上即可。
既然嫌弃虚拟机繁重,想用Docker,那好,你用吧,怎么用呢?手动一个一个创建?
- K8S容器集群管理技术
当然不,故kubernetes技术便出现了,以kubernetes为代表的容器集群管理系统,这时候就该上场表演了。
说白了,我们用kubernetes
去管理Docker集群
,即可以将Docker看成Kubernetes内部使用的低级别组件。
另外,kubernetes不仅仅支持Docker
;还支持Rocket
,这是另一种容器技术。
4 其他角度
4.1 系统角度
从系统角度来看:
docker
是一种单机容器技术,在单独的主机上运行。
小型应用程序部署的话直接使用
docker
或者docker-compose
编排就可以了。
k8s
是一种分布式集群系统,可以在多个主机上面协调和管理容器。
如果是大型的应用的话,使用k8s多机部署编排则更合适
4.2 功能角度
从功能上来看的话
docker
提供对容器的创建、启动、停止和删除等。k8s
则提供丰富的容器编排和管理,比如自动扩容,负载均衡、服务发现和滚动更新等。
4.3 各自优势
- Docker的优势:容器技术
- 隔离性:Docker容器是相互隔离的,每个容器运行着自己的进程、文件系统和网络接口,从而保证了应用程序容器之间的独立性和安全性。
- 可移植性:Docker容器可以在任何地方运行,无需修改,从而实现了在不同的环境中快速分发、部署和移植应用。
- 简洁性:Docker容器中仅包含所需的组件和软件包,不像虚拟机需要运行整个操作系统,因此具有更小的存储和内存开销。
- 可重复性:Docker容器的构建和部署过程可以自动化,从而保证了应用程序的可重复性和一致性。
- Kubernetes的优势:容器编排技术
X 参考文献
- 面试官:请你说说k8s 和 Docker的区别? - CSDN
- Docker和k8s的区别与介绍 - 博客园
- K8S 弃用 Docker 了?Docker 不能用了?别逗了! - Zhihu
- 三年Java开发转运维----面试官问我:docker和k8s有什么区别,我应该怎么回答? - Zhihu
- 一文带你认识「Docker」与「k8s」 - juejin
本文链接: [Docker/K8S] Docker与K8S的区别 - 千千寰宇 - 博客园
相关文章:

(转)Docker与K8S的区别
1 定义角度 Docker是一种开放源码的应用容器引擎,允许开发人员将其应用和依赖包打包成可移植的容器/镜像中;然后,发布到任何流行的 Linux 或 Windows 机器上,也能实现虚拟化。该容器完全使用沙箱机制,彼此之间没有任何…...
服务器数据迁移
写在前面:为满足业务需求,我们采购了一台新的高性能服务器,现在想把旧服务器中的用户文件以及conda环境等迁移到新服务器中去。为了保证迁移过程尽可能不出错,并且迁移后新的服务器可以直接使用,以下方案提供一个稳健、…...
VB.NET与SQL连接问题解决方案
1.基本连接步骤 使用SqlConnection、SqlCommand和SqlDataReader进行基础操作: vb.net Imports System.Data.SqlClient Public Sub ConnectToDatabase() Dim connectionString As String "ServermyServerAddress;DatabasemyDataBase;Integrated Security…...

商用密码 vs 普通密码:安全加密的核心区别
商用密码 vs 普通密码:安全加密的核心区别 一. 引言:密码的世界二. 什么是普通密码?三. 什么是商用密码?四. 普通密码 vs 商用密码:核心区别五. 选择合适的密码方案六. 结语 前言 肝文不易,点个免费的赞和…...

MYSQL中的分库分表及产生的分布式问题
分库分表是分布式数据库架构中常用的优化手段,用于解决单库单表数据量过大、性能瓶颈等问题。其核心思想是将数据分散到多个数据库(分库)或多个表(分表)中,以提升系统的吞吐量、查询性能和可扩展性。 一&am…...
拥塞控制算法cubic 和bbr
1. 背景 CUBIC 和 BBR 是两种用于网络流量控制的拥塞控制算法,广泛应用于传输中,本质上是用于提升网络速度、稳定性和效率的方案。CUBIC 和 BBR 在本质思想、设计目标和工作方式上存在很大的差异,以下是两者的详细对比。 1.1 CUBIC 提出者…...

投影机三色光源和单色光源实拍对比:一场视觉体验的终极较量
一、光源技术:从 “单色模拟” 到 “三色原生” 的进化 (一)单色光源:白光的 “色彩魔术” 单色光源投影机采用单一白光作为基础光源,通过LCD上出现色彩呈现颜色。这种技术路线的优势在于成本可控,早期被广…...

电子电气架构 --- 下一代汽车电子电气架构中的连接性
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...
解析极限编程-拥抱变化(第2版)笔记
思维导图(转载) https://www.cnblogs.com/OneFri/p/17055449.html 极限编程(XP)是以人为核心、响应变化、持续交付价值的软件开发方法论 1.核心思想与价值观 XP 建立在 5 个核心价值观 之上: 价值观含义说明沟通团…...

手写Tomcat(一)
一、Tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 1.1 Tomcat基本架构 Servlet接口文件中定义的方法有以下…...

【机器学习基础】机器学习入门核心算法:支持向量机(SVM)
机器学习入门核心算法:支持向量机(SVM) 一、算法逻辑1.1 基本概念1.2 核心思想线性可分情况 二、算法原理与数学推导2.1 原始优化问题2.2 拉格朗日对偶2.3 对偶问题2.4 核函数技巧2.5 软间隔与松弛变量 三、模型评估3.1 评估指标3.2 交叉验证…...

定时清理流媒体服务器录像自动化bash脚本
定时清理流媒体服务器保存录像文件夹 首先创建一个文件,解除读写权限 touch rm_videos.sh chmod 777 rm_videos.sh将内容复制进去,将对应文件夹等需要修改的内容,根据自己的实际需求进行修改 #!/bin/bash# 设置目标目录(修改为你的实际路…...

Logi鼠标切换桌面失效
Mac上习惯了滑屏切换桌面,所以Logi鼠标也定制了切换桌面的动作,有一天发现这个动作失效了,且只有切换桌面的动作失效。 发现Logi Options出现了这个提示,如图所示(具体原因未知,已配置不自动更新版本&…...
Go语言之匿名字段与组合 -《Go语言实战指南》
Go 没有传统的面向对象继承机制,但它通过“匿名字段(embedding)”实现了类似继承的组合方式,使得一个类型可以“继承”另一个类型的字段和方法。 一、什么是匿名字段 匿名字段就是在结构体中嵌套一个类型而不显式命名字段名。该字…...
Linux 进阶命令篇
一、Linux 系统软件安装命令 (一)Ubuntu 系统(基于 Debian) apt :是 Ubuntu 系统中常用的包管理工具,可以自动处理软件依赖关系。 安装命令格式 :sudo apt install 软件名 示例 :…...
OpenCV CUDA模块图像处理------颜色空间处理之拜耳模式去马赛克函数demosaicing()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数用于在 GPU 上执行拜耳图像(Bayer Pattern)的去马赛克操作(Demosaicing),将单通…...

2025年全国青少年信息素养大赛复赛C++集训(15):因子问题(题目及解析)
2025年全国青少年信息素养大赛复赛C集训(15):因子问题(题目及解析) 题目描述 任给两个正整数N、M,求一个最小的正整数a,使得a和(M-a)都是N的因子。 时间限制:10000 内存限制&…...
如何通过仿真软件优化丝杆升降机设计
通过仿真软件优化丝杆升降机设计可从多维度入手,以下为具体方法和分析: 一、基于有限元分析的结构优化 材料优化:通过ANSYS等软件建立三维模型,施加实际工况载荷(如轴向力、径向力、扭矩),计算…...

Vue3进阶教程:1.初次了解vue
1.初次了解vue vue文件目录和各个文件在这里不做介绍 此课程对针对有点vue基础的同学,或者看过我上部分vue的教程 与之前我的Vue教程不同的是,写法和内容有区别 真正的了解Vue3 1.创建vue组件 1.npm create vuelatest 2.取名 3.TS要选上 4.其他先不选 5…...

WordPress免费网站模板下载
大背景图免费wordpress建站模板 这个wordpress模板设计以简约和专业为主题,旨在为用户提供清晰、直观的浏览体验。以下是对其风格、布局和设计理念的详细介绍: 风格 简约现代:整体设计采用简约风格,使用了大量的白色和灰色调&am…...

【深度学习新浪潮】以图搜地点是如何实现的?(含大模型方案)
1. 以图搜地点的实现方式有哪些? 扫描手机照片中的截图并识别出位置信息,主要有以下几种实现方式: 通过照片元数据获取: 原理:现代智能手机拍摄的照片通常会包含Exif(Exchangeable Image File)元数据。Exif中除了有像素信息之外,还包含了光圈、快门、白平衡、ISO、焦距…...

element的el-table翻页选中功能
el-table翻页选中功能 row-key"enterpriseWorkerId" selection-change"handleSelectionChange"<el-table-column type"selection" :reserve-selection"true" width"55"></el-table-column>stuMultipleList: []…...

Python打卡训练营学习记录Day38
知识点回顾: Dataset类的__getitem__和__len__方法(本质是python的特殊方法)Dataloader类minist手写数据集的了解 作业:了解下cifar数据集,尝试获取其中一张图片 import torch import torch.nn as nn import torch.opt…...

deepseek开源资料汇总
参考:DeepSeek“开源周”收官,连续五天到底都发布了什么? 目录 一、首日开源-FlashMLA 二、Day2 DeepEP 三、Day3 DeepGEMM 四、Day4 DualPipe & EPLB 五、Day5 3FS & Smallpond 总结 一、首日开源-FlashMLA 多头部潜在注意力机制&#x…...
CollUtil详解
CollUtil 是 Hutool 工具库中的一个工具类,专门用于操作集合(Collection)。它提供了许多静态方法,可以简化对集合的常见操作,例如判断集合是否为空、合并集合、过滤集合等。 以下是关于 CollUtil 的详细介绍和常用方法…...
Elasticsearch的运维
Elasticsearch 运维工作详解:从基础保障到性能优化 Elasticsearch(简称 ES)作为分布式搜索和分析引擎,其运维工作需要兼顾集群稳定性、性能效率及数据安全。以下从核心运维模块展开说明,结合实践场景提供可落地的方案…...

Linux编辑器——vim的使用
vim是一款多模式的编辑器。 基本操作:vim打开默认是命令模式,也就是输入命令然后系统执行指令,想要写代码,只需输入字母i,就进入插入模式,写完代码想要退出,按一下Esc,退回到命令模…...

线性回归原理推导与应用(八):逻辑回归二分类乳腺癌数据分类
乳腺癌数据是sklearn中自带的数据集,需要通过相关特征对是否患有乳腺癌进行分类。 数据清洗与建模 首先加载相关库和相关数据 from sklearn.datasets import load_breast_cancer from sklearn.linear_model import LogisticRegression import numpy as np import…...

Jenkins分配对应项目权限与用户管理
在日常开发过程中经常会出现用户和权限管理问题,没有配置trigger时,通常需要我们手动构建,但此时前端和后端的朋友没有build权限,导致每次dev环境测试都需要麻烦我们手动去构建,消息传达不及时则会降低开发效率。 现有…...

Mate桌面环境系统与终端模拟器参数配置
说明: MATE桌面环境在使用中会优化一些参数配置,例如:电源选项、屏幕配置、字体配置、终端模拟器(Mate Terminal)配置等等。 通常工程师会根据自己喜好调整一些参数,修改后参数的保存位置在/home/u…...