k8s和docker的区别是什么

k8s和docker的区别是什么,最近学校让写一边k8s和docker的深度解析文章,想听听大家的一些见解

Kubernetes(简称K8s)和Docker都是用于容器化应用程序的技术,但它们解决不同的问题。

Docker是一种容器化技术,它可以将应用程序及其依赖打包在一个可移植的容器中,使得应用程序可以在不同的环境中运行,而无需担心环境差异导致的问题。 Docker提供了构建、运行和分享容器的工具。

Kubernetes是一个容器编排平台,用于管理多个Docker容器,以便它们可以协同工作。Kubernetes提供了一种集中式的方法来部署、管理和扩展应用程序。它可以自动处理容器的部署、配置和扩展,还可以提供负载均衡和服务发现等功能。

简单来说,Docker是一种容器化技术,而Kubernetes是一种容器编排平台,用于管理多个Docker容器。Docker主要关注容器本身,而Kubernetes则关注如何管理和扩展多个容器。

  • 你看下这篇博客吧, 应该有用👉 :部署k8s启动docker报错
  • 除此之外, 这篇博客: Docker和K8S的比较(初探)中的 1、Docker和K8S 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Docker 是一个开源的、轻量级的容器引擎,和 VMware 虚拟机相比,Docker 使用容器承载应用程序,而不使用操作系统,所以它的开销很少,性能很高。但是,Docker 对应用程序的隔离不如虚拟机彻底,所以它并不能完全取代 VMware。

    在传统的开发过程中(我之前的开发过程),以Java为例,一般都是本地(开发机)开发运行然后打成jar、war包放到服务器上,然后在服务器上部署相关环境(JDK、Redis、Mysql、Nginx等),非常麻烦。一款产品开发–上线是两套不同的环境,应用环境,应用配置都是不同的,很容易导致的问题是:为什么在本地可以运行,部署后出现问题,版本更新后为什么导致服务不可用,对于运维来说考验十分大。

    环境配置是十分的麻烦(对Linux不熟悉的同学经常会出现各种各样奇葩的问题,甚至把环境搞脏),对于集群每一个都要部署环境(集群Redis、ES、Hadoop…) 费事费力。发布一个项目( jar + (Redis MySQL JDK ES) ),项目能不能带上环境安装打包。

    基于以上问题,Dokcer提出了解决方案。

    相信很多人都用过虚拟机,虚拟机,就是在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。 在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互隔离的,互不影响。虚拟机属于虚拟化技术。而Docker这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化

    在这里插入图片描述

    虚拟机虽然可以隔离出很多“子电脑”,但占用空间更大,启动更慢,虚拟机软件可能还要花钱(例如VMWare)。而容器技术恰好没有这些缺点。它不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。

    比较Docker和虚拟机技术的不同:

    传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
    Docker:容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
    每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响

    但需要注意的是: Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。

    Docker技术的三大核心概念,分别是:

    • 镜像(Image)
    • 容器(Container)
    • 仓库(Repository)

    对于Docker来说,其作用可概况为:搭建,发送,运行。即将相关内容包括环境等等打包成一个镜像,然后放到仓库里,需要时进行下载运行即可。