• 虚拟化技术笔记


    一些名词:

    LXC:

    Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源, 而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。

    与传统虚拟化技术相比,它的优势在于:

    (1)与宿主机使用同一个内核,性能损耗小;
    (2)不需要指令级模拟;
    (3)不需要即时(Just-in-time)编译;
    (4)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;
    (5)避免了准虚拟化和系统调用替换中的复杂性;
    (6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
    总结:Linux Container是一种轻量级的虚拟化的手段。
     
    LXC在资源管理方面依赖于Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag(NEWNS NEWPID等等)。
     
    Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。

    namespace

    Linux Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的(在Linux2.6内核以前是全局的),而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。namespace是container中使用到的重要技术之一,是对系统资源的操作上的隔离。使Guest-OS1的操作对Guest-OS2无法产生影响。

    LXC与docker的关系

    (1)Docker并不是LXC的替代品,Docker的底层就是使用了LXC来实现的。LXC将Linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。 
    (2)在LXC的基础之上,Docker提供了一系列更强的功能。

     

    Docker & libcontainer

    Libcontainer 为 docker 封装了 Linux 提供的基础功能,如 cgroups,namespaces,netlink 和 netfilter 等,如下图所示(此图来自互联网):
     

    Docker & Docker Swarm

    Docker Swarm 是一个在 docker 引擎中构建的编排工具。从 docker 1.12 开始它就作为一个独立的工具被原生包含在 docker engine 中。我们可以使用 docker cli 通过 docker swarm 创建群集,并部署和管理应用程序和服务。下图描述了 docker swarm 在 docker 体系中的作用(此图来自互联网):

     Docker&Kubernetes

    在 docker swarm 与 kubernetes 的竞争中,显然是 kubernetes 占据了优势。所以 docker 紧急掉头,开始原生的支持与 kubernetes 的集成。这可是 2017 年容器界的一大新闻啊!至此,docker 用户和开发人员可以自由地选择使用 kubernetes 或是 swarm 执行容器的编排工作。我们可以认为 docker 与 kubernetes 联姻了.

    新的支持 kubernetes 集成的 docker 版本将允许用户把他们的 docker compose 应用程序部署为 kubernetes 本地 pod 和服务。Kubernetes 是一款非常强大且逐渐被大众认可的本地编排工具(此图来自互联网):

  • 相关阅读:
    了解 C++ 默默编写并调用的函数
    确保对象在被使用前的初始化
    尽可能使用 const
    尽量多的以 const/enum/inline 替代 #define
    六 GPU 并行优化的几种典型策略
    五 浅谈CPU 并行编程和 GPU 并行编程的区别
    四 GPU 并行编程的存储系统架构
    三 GPU 并行编程的运算架构
    求解线性方程组的三种基本迭代法
    C#基础 特殊集合(栈集合、队列集合、哈希表集合)
  • 原文地址:https://www.cnblogs.com/snow-man/p/10265470.html
Copyright © 2020-2023  润新知