容器的本质是什么

这篇具有很好参考价值的文章主要介绍了容器的本质是什么。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

广义上来说,容器技术是动态的容器、静态的镜像和远端的仓库这三者的组合。

容器,就是一个特殊的隔离环境,它能够让进程只看到这个环境里的有限信息,不能对外界环境施加影响。

对于 Linux 操作系统来说,一个不受任何限制的应用程序是十分危险的。这个进程能够看到系统里所有的文件、所有的进程、所有的网络流量,访问内存里的任何数据,那么恶意程序很容易就会把系统搞瘫痪,正常程序也可能会因为无意的 Bug 导致信息泄漏或者其他安全事故。虽然 Linux 提供了用户权限控制,能够限制进程只访问某些资源,但这个机制还是比较薄弱的,和真正的“隔离”需求相差得很远。

容器技术的另一个本领就是为应用程序加上资源隔离,在系统里切分出一部分资源,让它只能使用指定的配额。

容器的本质是什么,K8S,k8s,容器

容器和虚拟机的目的都是隔离资源,保证系统安全,然后是尽量提高资源的利用率。

从实现的角度来看,虚拟机虚拟化出来的是硬件,需要在上面再安装一个操作系统后才能够运行应用程序,而硬件虚拟化和操作系统都比较“重”,会消耗大量的 CPU、内存、硬盘等系统资源,但这些消耗其实并没有带来什么价值,属于“重复劳动”和“无用功”,不过好处就是隔离程度非常高,每个虚拟机之间可以做到完全无干扰。

容器直接利用了下层的计算机硬件和操作系统,因为比虚拟机少了一层,所以自然就会节约 CPU 和内存,显得非常轻量级,能够更高效地利用硬件资源。不过,因为多个容器共用操作系统内核,应用程序的隔离程度就没有虚拟机那么高了。

不过,虚拟机和容器这两种技术也不是互相排斥的,它们完全可以结合起来使用,用虚拟机实现与宿主机的强隔离,然后在虚拟机里使用 Docker 容器来快速运行应用程序。

 Linux 操作系统内核之中,为资源隔离提供了三种技术:namespace、cgroup、chroot。

namespace 是 2002 年从 Linux 2.4.19 开始出现的,和编程语言里的 namespace 有点类似,它可以创建出独立的文件系统、主机名、进程号、网络等资源空间,相当于给进程盖了一间小板房,这样就实现了系统全局资源和进程局部资源的隔离。

cgroup 是 2008 年从 Linux 2.6.24 开始出现的,它的全称是 Linux Control Group,用来实现对进程的 CPU、内存等资源的优先级和配额限制,相当于给进程的小板房加了一个天花板。

chroot 的历史则要比前面的 namespace、cgroup 要古老得多,早在 1979 年的 UNIX V7 就已经出现了,它可以更改进程的根目录,也就是限制访问文件系统,相当于给进程的小板房铺上了地砖。

此文章为7月Day3学习笔记,内容来源于极客时间《Kubernetes入门实战课》,推荐该课程。文章来源地址https://www.toymoban.com/news/detail-519883.html

到了这里,关于容器的本质是什么的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s容器集群管理

    k8s容器集群管理 k8s简介 容器技术的发展 使用kubeadm安装k8s kubectl Kubernetes 架构 k8s节点 节点与控制面之间的通信 控制器 k8s容器 Kubernetes 对象 Kubernetes 对象管理 Kubernetes 对象管理 指令式命令 Kubernetes 对象管理 指令式对象配置 k8s对象管理 声明式对象配置 使用 Kustomize 对 Kubern

    2024年02月10日
    浏览(35)
  • k8s中的容器

    容器的状态 Running(运行中) :容器正在运行并且正常工作。 Waiting(等待中) :容器正在等待某些条件满足,例如等待其他容器就绪、等待网络连接等。 Terminated(已终止) :容器已经完成工作并终止。这可能是正常的完成,也可能是出现错误导致终止。 容器的重启策略

    2024年02月09日
    浏览(38)
  • k8s如何进入容器

    首先查看你要进入容器的NAME kubectl get pod | awk \\\'{print $1}\\\' 注:如果有命名空间需要加上命名空间 命名空间查看方式(箭头标注为命名空间) kubectl -n 命名空间 get pod | awk \\\'{print $1}\\\' -n:命名空间 找到容器后进入容器 kubectl exec -it podname[刚刚查到的容器名字] /bin/bash exec:进入容器

    2024年02月09日
    浏览(41)
  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

    一、docker的问世         在LXC(Linux container)Linux容器虚拟技术出现之前,业界网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。 虚拟机是什么?         虚拟机其实就是 在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。

    2024年03月26日
    浏览(71)
  • k8s管理容器的方式

    Kubernetes(简称k8s)是一个开源的容器编排和管理工具,支持自动化部署、扩展和管理容器化应用程序。 Kubernetes的核心是控制平面和数据平面。控制平面包括 API Server、Controller Manager、Scheduler 和 etcd。数据平面包括一组运行在工作节点上的容器化应用程序。 Kubernetes管理容器的

    2024年02月04日
    浏览(46)
  • K8S容器编排基本使用

    物理单机 – 虚拟机(VMware)-- IAAS(基础设施即服务 比如够买jsp主机模式)-- OPENSTACK(多个机器分片使用思想)-- docker(容器化) – K8S(云原生自动化部署自动化编排) kubernetes k和s之间有8个字母所以命名为K8S,用于自动部署、扩展、统一管理容器化应用集群,支持云平台

    2024年01月22日
    浏览(51)
  • k8s命令查看容器日志

    ● namespace 以不同命名空间区分环境,如:TEST,DEV ● POD k8s运行的最小单位 ● Service 一种资源类型,将pod开放给外部访问,拥有IP地址,port,target port,前者为对外端口,后者为pod端口 kbpod 功能:列出pod 使用方式: kbpod namespace 说明:如果namespace为all,将打印所有命名空间的

    2024年02月06日
    浏览(48)
  • k8s容器日志收集方案

        log-pilot安装            

    2024年02月16日
    浏览(36)
  • K8S容器编排高级应用

    pod控制器帮助我们自动管理pod,并满足期望的pod数量。pod控制器通过label标签来管理pod。在资源文件中通过selector来配置选择器,通过kind来配置控制器。一般我们的应用在生产环境用k8s一定要用pod控制器管理pod而不是自己创建pod这样才能保证可靠性。 版本升级的时候一般通过

    2024年01月24日
    浏览(51)
  • K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令

    两种部署方式: kubeadm工具部署 。Kubeadm 是一个K8s 部署工具,提供 kubeadm init 和kubeadm join,用于快速部署 Kubernetes集群。 kubeadm 工具功能: kubeadm init:初始化一个 Master 节点。 kubeadm join:将工作节点加入集群。 kubeadm upgrade:升级 K8s 版本。 kubeadm token:管理 kubeadm join 使用的令

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包