LXC 介绍

2023-05-16

转自:https://www.cnblogs.com/xidongyu/p/5767020.html

LXC又名Linux container,是一种虚拟化的解决方案,这种是内核级的虚拟化。(主流的解决方案Xen ,KVM, LXC)

介绍


通过namespace进行资源的隔离,Gust1下的进程与Guset2下的进程是独立的,可以看作运行在两台物理机上一样。Contaniner管理工具就是对Guest进行管理的(创建、销毁)。

图是对LXC架构的介绍

下图是LXC与KVM技术的比较,KVM的优点是一个物理机上可以跑多个操作系统(Guest-OS),然后在每个操作系统运行应用,通过这种方式实现应用的隔离。而使用LXC技术直接可以在Host-OS的基础上实现隔离的。这就是LXC的优势–运行快。但是,如果有两个应用一个是在windows运行的,一个是在linux上运行的,这时只能使用KVM技术来实现了。

namespace


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

当然namespace的实现还在完善中,下面是3.8以上的内核实现的namespace

 

 Mount


Mount namespace是对挂载的文件系统布局进行隔离。图中显示在Namespace1中的进程看到的文件系统的挂载方式是一致的,但是在Mount Namespace2中看到的是一另一种情况

IPC


处于同一namespace下的进程才可以进行进程间通信。

 NET


NET NAMESPACE实现网络协议栈上的隔离,在自己的namespace中对网络的设置只能在本namespace中生效。

 PID


我们通过fork来创建进程时可以为每个进程指定命名空间。linux下的进程关系是一棵树,所以有了父命名空间和子名字空间之分。

在namespace2创建的P2进程有两个pid。第一个是在父命名空间的下的它的PID号,一个是在自己空间下的PID号。之所以有父pid号是因为P2最终还是在父命名空间下运行的,而为进程指定命名空间是为了让P2和P3实现隔离。

USER


User namespace中使用到了map转换,由于container并不是真正的虚拟化,所以在Guest-OS中创建的root用户会被映射到Host-OS中的普通用户中去。

下图中的例子中,root用户在自己的namespace下创建了一个文件,那这个文件的所有者ID应该是0,当时在磁盘上存的时候文件UID会被转换为kuid,并且所有者ID为1000。想说名一点是在Guest-OS下你是个root用户,但是在Host-OS你只不过被转为一个普通用户而已。因为我们知道在Host-OS下已经有一个root用户了。

 system API/ABI


 

linux下的proc目录是对整个系统状态的描述,用户可以通过查看proc目录来了解当前的系统状态。在proc目录下有很多数字,这些数字对应的是系统创建的进程ID,以前我们说进程是看不见摸不着的,但是通过proc目录我们的确可以看到一些关于进程的信息。

每个进程下有个ns目录,在目下记录了该进程使用的到namespace

clone函数的使用

clone函数是系统的API,是用于创建进程的。我们常用到的fork函数其实底层调用的是clone函数。在使用clone函数的可以为其指定namespace。下面是一个指定IPC名字空间的例子。

p2会运行在新的IPC namespace中,其他namespace会从P1继承下来

unshare函数

unshare函数用于修改当前的进程的namespace的信息。比如更换当前进程的namespace等等。

setns函数

将当前进程的namespace设置为另一进程的namespace

container管理工具


 

container与KVM的比较


container并未实现完全虚拟化,在Guest-OS中执行的一些操作会直接影响到HOST-OS。下面是两者的对比。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LXC 介绍 的相关文章

  • centos8 lxc 虚拟化安装redis

    yum install wget y 下载最新的redis 这个更新比较慢 http www redis cn download html 官网 https redis io download yum span class token fu
  • 使用lxc提供轻量级虚拟化

    lxc linux containers 是一种基于容器的操作系统层级的虚拟化技术 xff0c 一个容器就是一个虚拟的执行环境 xff0c 容器有效地将由单个操作系统管理的资源划分到孤立的组中 xff0c 以更好地在孤立的组之间平衡有冲突的
  • LXC是什么、什么是docker、docker产生的背景

    LXC LXC是什么 LXC xff0c 其名称来自Linux软件容器 xff08 Linux Containers xff09 的缩写 xff0c 一种操作系统层虚拟化 xff08 Operating system level virtu
  • docker & LXC

    目录 一 LXC1 了解Docker的前生LXC2 LXC与docker的关系3 与传统虚拟化对比4 LXC部署4 1 安装LXC软件包和依赖包4 2 启动服务4 3 创建虚拟机 5 LXC常用命令 二 doker1 什么是docker2
  • 更换 PVE7 软件仓库源和 CT模板(LXC)源为国内源

    PVE7 安装后默认配置的 apt 软件源和 CT LXC 容器模板源均是官方默认的 xff0c 国内使用性能不佳 xff0c 建议替换为 清华 Tuna 提供的国内镜像源 xff0c 速度将有一个较大的提升 如果 pve 官网 iso 镜
  • LXC与Docker介绍

    文章目录 LXCLUX是什么LXC常用命令LXC的使用 Docker容器虚拟化和传统虚拟化的区别Linux NamespacesCGroupsdoeker基本概念docker容器编排 LXC LUX是什么 LXC xff08 LinuX C
  • LXC/KVM虚拟化基本概念

    1 LXC 其名称来自Linux软件容器 xff08 Linux Containers xff09 的缩写 一种操作系统层虚拟化 xff08 Operating system level virtualization xff09 技术 xf
  • 使用 Docker/LXC 迅速启动一个桌面系统

    原文出处 xff1a vpsee Docker是 dotCloud 的一个开源引擎 xff0c 旨在提供一种应用程序的自动化部署解决方案 xff0c 简单的说就是 xff0c 在 Linux 系统上迅速创建一个容器 xff08 类似虚拟机
  • Ubuntu中使用Docker/LXC迅速启动一个桌面系统

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 2013年07月18日 标签 cloud container docker lxc 作者 xff1a vpsee Docker 是 dotCloud 最近几个月刚宣布的开源
  • 大规模部署lxc容器遇到的若干问题

    线程数控制 启动线程过多会导致资源不足引发的lxc start命令无法执行问题 到致大量容器只执行了lxc copy 而无法真正运行 具体情况应视服务器硬件条件 cpu 内存 在本项目部署中主要瓶颈在于cpu 以及当前服务器状态 当前主要是
  • 没有 chroot 的 LXC

    有没有办法在不创建容器的情况下使用LXC使用进程组进行资源管理 我正在开发一个在沙箱内运行任意代码的服务 我只对硬件资源管理感兴趣 我不想进行任何 chrooting 我只希望这些进程组能够访问主文件系统 有人告诉我 lxc 是轻量级的 但
  • 如何从 lxc 挂载文件夹

    我有 lxc 它有一个正在运行的应用程序 要在自己的计算机 Ubuntu 13 10 上编辑此应用程序的代码 我想挂载一个目录lxc 如何才能做到这一点 例如 var lib lxc ubuntu 12 04 rootfs home 安装在
  • 我可以从我自己的自定义操作系统创建 LXC 映像吗?

    我是lxc的新手 我想从现有操作系统创建我自己的 lxc 容器 我自己的 unix 内核在不同架构中编译 我正在尝试使用 lxc create 谁能建议我如何创建自己的容器 是否可以使用这种方法创建一个容器 创建自己的容器后是否需要更改任何
  • 如何备份/移动 LXC 容器?

    我想要 lxc 容器备份 我们有服务器12 04 LTS ubuntu server我已经安装了LXC 1 0 0 alpha2在里面 我想将我们的 ubuntu 服务器更新到 14 04 LTS 所以我想做的是备份 LXC 容器 gt 将
  • 如何从任何 Docker 存储库中提取单个映像?

    docker 存储库包含多个镜像 是否可以从存储库中提取特定图像 当我使用时 docker pull ubuntu 它会下载大约 8 10 个不同版本的 ubuntu 如果有标记的特定图像 您可以使用 tag 或 t 运算符来提取您要查找的
  • LXC 与 VM 的典型用例是什么?

    我正在尝试确定 LXC 容器何时是比使用完整虚拟机更好的选择 您是否有任何精确的用例可以以某种方式带来一些争论 LXC 是否更面向 PaaS 无需硬件控制即可运行应用程序 我们是否总是需要从 IaaS 角度使用虚拟机来控制基础设施 Rega
  • “lxd”与 lxc/docker 有何不同?

    问题 lxd 如何在容器内提供完整的操作系统功能 而不仅仅是单个进程 它与 lxc docker 包装器有什么不同 是不是类似于用docker supervisor wrapper脚本启动一个容器 在一个容器中包含多个进程 换句话说 我可以
  • 无法使用 SSH 连接到 docker 容器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • 将 docker 根文件夹移动到新驱动器/分区

    我正在尝试将 var lib docker 文件夹从一个磁盘移动到另一个磁盘 因为它占用了太多空间 我不断遇到一些与权限相关的错误 根据这些问题 如何将 Docker 容器的映像移动到永久磁盘 https stackoverflow com
  • 主机 LAN 上的 LXC 容器

    我的 LXC 容器通常与专用网络上的伪装桥配合使用 这次我想将容器放在主机的LAN上 但我无法得到任何结果 我在 debian 上使用 LXC 2 0 7 2 deb9u2 我参考了这个文档 LXC SimpleBridge https w

随机推荐

  • Linux smbclient使用详情

    例子 smbclient 192 168 10 2 目录 U 用户名 回车 再输入 密码 参数说明 网络资源 网络资源 的格式为 服务器名称 资源分享名称 密码 输入存取网络资源所需的密码 B lt IP地址 gt 传送广播数据包时所用的I
  • ESP8266获取网络天气

    使用ESP8266模块来获取网络数据 xff08 天气 xff0c 时间等 xff09 xff0c 还是挺简单的 一步一步来 1 初始化串口与相关IO 使得MCU可正常使用串口的发送与接收 xff0c 以及一些IO控制ESP8266的使能端
  • win11环境安装postgreSql数据库

    1 xff0c 下载安装文件后一路next安装 2 数据库初始化 创建data目录 xff0c 保证软件有权限读写和访问 pg ctl D data init 3 启动数据库 pg ctl D data D data start 4 创建初
  • verilog实现38译码器

    module decode 38 input wire 2 0 a output reg 7 0 y integer i always 64 begin for i 61 0 i lt 8 i 61 i 43 1 begin if a 61
  • DiffServ--百度介绍

    区分服务 xff08 DiffServ xff09 是IETF工作组为了克服Inter Serv的可扩展性差在1998年提出的另一个服务模型 xff0c 目的是制定一个可扩展性相对较强的方法来保证IP的服务质量 与综合服务 xff08 In
  • P2P在NAT和防火墙上的穿透

    概述 本文主要讨论关于P2P通信的一些常见问题和解决方案 主要内容包含 xff1a P2P通信与网络设备的关系 不同的网络设备特征对P2P产生的影响 网络地址转换 xff08 NAT xff09 的类型 NAT类型的检测方法 协议防火墙的突
  • conflicting types for 'dev_t'的原因

    在Linux下编译程序有时会遇到这种问题 xff0c 这貌似是一个Linux历史遗留问题 usr include sys types h 62 error conflicting types for dev t usr include li
  • https不能访问时的解决方案

    当 xff08 win7 里 xff09 IE浏览器 https打不开 https不能访问时 1 请保证 IE 工具 高级选项中的TSL 1 0前面不要打上勾就可以了 xff08 注解 xff0c 当你用 IE的 还原高级设置 时 xff0
  • Ubuntu LTS 版本知多少

    原文地址http oss org cn html 79 n 70179 html 特别声明 xff1a 从Ubuntu 12 04开始 xff0c LTS 版本的支持周期策略有所改变 xff0c 具体改变信息见下面的详细说明 先介绍一词 x
  • ubuntu下配置vlan功能--官网vlan how to

    http ubuntuforums org showthread php t 61 703387 ubuntu官网介绍 802 1q VLAN HOWTO Doing 802 1q trunking to an Ethernet switc
  • 万台规模下的SDN控制器集群部署实践

    目前在网络世界里 xff0c 云计算 虚拟化 SDN NFV这些话题都非常热 今天借这个机会我跟大家一起来一场SDN的深度之旅 xff0c 从概念一直到实践一直到一些具体的技术 本次分享分为三个主要部分 xff1a SDN amp NFV的
  • linux-vdso.so.1介绍

    这段时间看Linux内核源码的时候 xff0c 经常碰到vdso这个东西 像在Feature fixup中 xff0c 获取时间等操作时 xff0c 网上搜了一下 xff0c 才知道了含义 xff0c 原来这是Linux为了解决和glibc
  • ECC密钥编程举例,并用它做签名和验签,并生成共享密钥

    下面的例子生成两对ECC密钥 xff0c 并用它做签名和验签 xff0c 并生成共享密钥 include lt string h gt include lt stdio h gt include lt openssl ec h gt inc
  • 最新OmniPeek无线驱动详细列表与下载说明/支持捉空口包的网卡

    OmniPeek无线驱动详细列表与下载 在进行无线网络分析时 xff0c Omnipeek需要安装特殊驱动来捕获管理 控制和数据帧 而且在OmniPeek停止不用时 xff0c 它们将作为普通驱动支持网络服务的正常运行 WildPacket
  • Html自我介绍

    lt doctype html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt title gt 兰博基尼 lt title gt lt style type 61
  • grub2下常见系统初始化错误的分析和解决

    原文连接http tieba baidu com p 2910461207 grub rescue gt grub gt initramfs 是开机错误时 xff0c 常见到的状况 我将分以下几个部份说明 xff1a 一 开机出现 grub
  • MSP-EXP430F5529LP: Error initializing emulator: No USB FET was found

    正常情况下 xff0c 安装了CCS之后 xff0c TI MSP430LaunchPad的驱动都可以自动安装好 主要是 xff1a MSP Application UART 和 MSP Debug Interface 当然 xff0c 非
  • CMakeLists.txt加载第三方库

    生成一个库文件 TgMath h ifndef TGMATH H define TGMATH H include 34 tgmath global h 34 class TGMATHSHARED EXPORT TgMath public T
  • ROS学习之订阅消息——Subscriber_代码分析

    接上篇 xff1a ROS学习之发布消息 Publisher 详解版本 xff1a 本代码文件名为 xff1a subscriber cpp include 34 ros ros h 34 include 34 std msgs Strin
  • LXC 介绍

    转自 xff1a https www cnblogs com xidongyu p 5767020 html LXC又名Linux container xff0c 是一种虚拟化的解决方案 xff0c 这种是内核级的虚拟化 主流的解决方案Xe