lxc

2023-05-16

LXC为Linux Container的简写。Linux Container容器是一种内核 虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统 虚拟化技术相比,它的优势在于:
(1)与宿 主机使用同一个内核,性能损耗小;
(2)不需要指令级模拟;
(3)不需要即时(Just-in-time)编译;
(4)容器可以在CPU核心的本地 运行指令,不需要任何专门的解释机制;
(5)避免了准虚拟化和系统调用替换中的复杂性;
(6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
总结:Linux Container是一种轻量级的虚拟化的手段。
Linux Container提供了在单一可控 主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和 网络空间的虚拟环境,但又有别于 虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。

LXC的实现

Sourceforge上有LXC这个开源项目。LXC项目本身只是一个为用户提供一个用户空间的工具集,用来使用和管理LXC容器。LXC真正的实现则是靠Linux内核的相关特性,LXC项目只是对此做了整合。基于容器的虚拟化技术起源于所谓的资源容器和安全容器。
LXC在资源管理方面依赖于Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,具体而言就是在clone时加入相应的flag(NEWNS NEWPID等等)。
lxc常见命令使用:
lxc-version 用于显示系统LXC的版本号(可以通过此命令判断系统是否安装了lxc)
用法:lxc-version
例如:lxc-version
lxc-checkconfig 用于判断linux内核是否支持LXC
用法:lxc-checkconfig
例如:lxc-checkconfig
lxc-create用于创建一个容器
用法:lxc-create -n name [-f config_file]
-n 后面跟要创建的容器名字 例如:-n foo
-f 后面跟容器配置文件的路径
注:1.采用lxc-create创建的容器,在停止运行后,不会被销毁,要采用lxc-destroy命令才能销毁
2.容器命令空间是全局的,系统中不允许存在重名的容器,如果-n 后面跟一个已经存在的容器名,创建会失败
例如:lxc-create --n foo --f foo.conf
lxc-execute 用于在一个容器执行应用程序
用法: lxc-execute -n name [-f config_file] [ -s KEY=VAL ]command
-n 后面跟容器名字(容器名字用于管理容器)例如:-n foo
-f 后面跟容器配置文件的路径(如果没有配置文件,可以直接用-s指定配置选项,如果什么都没有,系统采用默认策略)例如:-f foo.conf
-s 后面跟配置键值对 例如:lxc.cgroup.cpu.shares=512
command 为要执行的命令 例如:/bin/bash
这个命令会mount /proc 并且会自动创建/销毁容器。
注:1.如果容器还不存在,lxc-execute会自动创建一个,容器停止运行后会被自动销毁
2.用lxc-execute启动应用程序,配置优先级如下:
如果指定-f选项,那么之前创建容器(如果容器是已存在的)的配置文件不会被使用
如果指定-s选项,则在命令行中的配置键值对会覆盖配置文件(无论之前的还是-f指定的)相同配置
例如:lxc-execute --n foo --s lxc.cgroup.cpu.shares=512 /bin/bash
使用实际例子:
lxc-execute -n test /bin/bash
这个会启动一个lxc并给出类似的一个cmd窗口,网络是与操作系统共用的,这里好像仅仅是创建了一个命名空间
如果没有指定-f,默认的隔离将被使用,这个命令当你需要一个快速在一个隔离的环境中运行程序。在物理机上和container中都会运行lxc-init,在宿主机上面,这个程序用于转发lxc-kill 信号到已经启动的程序中 ,在container中,这个程序的pid为1,它会fork出要执行的命令(pid为2)并执行。
lxc-start 用于在容器中执行给定命令
用法:lxc-start -n name [-f config_file] [-c console_file] [-d] [-s KEY=VAL]
[command]
-d 将容器当做守护进程执行
-f 后面跟配置文件
-c 指定一个文件作为容器console的输出,如果不指定,将输出到终端
-s 指定配置
如果没有指定命令,lxc-start 将要运行 /sbin/init
例如:lxc-start -n foo -f foo.conf -d /bin/bash
注:1.如果容器还不存在,lxc-start会自动创建一个,容器停止运行后会被自动销毁
2.lxc-start配置优先级与lxc-execute相同
3.lxc-start 与lxc.execute的异同:
lxc-start 和 lxc-execute都可以在容器中启动进程,区别在于lxc-start直接创建进程,lxc-execute先创建lxc-init进程,然后在lxc-init中fork一个进程来执行。(关于第4点,lxc-init所占的是一个什么样的地位?)
The orphan process group and daemon are not supported by this command,
use the lxc-execute command instead
If no command is specified, lxc-start will use the default "/sbin/init"
command to run a system container.
4.lxc-start用于在容器启动system,lxc-execute用于在容器执行应用程序
lxc-kill 发送信号给容器中的第一个用户进程(容器内部进程号为2的进程)
用法:lxc-kil -n name SIGNUM
-n 后面跟容器名
SIGNUM 信号 (此参数可选,默认SIGKILL)
例如:lxc-kill -n foo
lxc-stop 用于停止容器中所有的进程
用法:lxc-stop -n name
-n后面跟要停止的容器名
例如:lxc-stop --n foo
lxc-destroy 用于销毁容器
用法:lxc-destroy -n name
-n后面跟要停止的容器名
例如: lxc-destroy --n foo
lxc-cgroup 用于获取或调整与cgroup相关的参数
用法:lxc-cgroup -n name subsystem value
-n 后面跟要调整的容器名
例如: lxc-cgroup -n foo devices.list
lxc-cgroup -n foo cpuset.cpus "0,3"
lxc-info 用户获取一个容器的状态
用法:lxc-info -n name
-n后面跟操作的容器名
例如: lxc-info --n foo
注:容器的状态有:STARTING RUNNING STOPPING STOPPED ABORTING
lxc-monitor 监控一个容器状态的变换,当一个容器的状态变化时,此命令会在屏幕上打印出容器的状态
用法:lxc-monitor -n name
例如:lxc-monitor -n foo
lxc-ls 列出当前系统所有的容器
用法:lxc-ls
例如:lxc-ls
lxc-ps 列出特定容器中运行的进程
用法:lxc-ps
例如:lxc-ps -n foo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lxc 的相关文章

  • 使用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
  • LXC 介绍

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

    文章目录 1 什么是LXC2 什么是dockerdocker工作方式Docker产生的背景 1 什么是LXC LXC xff08 LinuX Container xff09 简称Linux的容器 xff0c 是世界上第一个容器应用 它将容器
  • LXC介绍

    LXC LXC又名Linux container xff0c 是一种虚拟化的解决方案 xff0c 这种是内核级的虚拟化 主流的解决方案Xen KVM LXC 介绍 通过namespace进行资源的隔离 Gust1下的进程与Guset2下的进
  • 在tinycorelinux上安装lxc,lxd (1)

    本文关键字 xff0c 在tinycorelinux上安装lxc xff0c lxd gcc4 4 self reference struct typedef 在前面的文章中我们讲到过内置虚拟化的os设计 xff0c 它可以使包括裸金属 x
  • 更换 PVE7 软件仓库源和 CT模板(LXC)源为国内源

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

    官方文档 xff1a https github com lxc lxd blob master doc userns idmap md 设置和取消设置 raw idmap xff0c 都需要重启容器才能应用 并且在重启容器时 xff0c 会
  • Ubuntu中使用Docker/LXC迅速启动一个桌面系统

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 2013年07月18日 标签 cloud container docker lxc 作者 xff1a vpsee Docker 是 dotCloud 最近几个月刚宣布的开源
  • Lxc之二—网络设置

    按照博客一所述 应该能够创建lxc虚拟机并运行虚拟机 如果是本地的话 应该能够进入虚拟机操作了 会发现虚拟机只提供了最原始和简单的一些程序 如果使用template方式 甚至连vim gcc python等都没有安装 更别说myql了 安装
  • 没有 chroot 的 LXC

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

    我刚刚读了优秀的SO问题 Docker 和虚拟机有什么区别 然而 被接受的答案让我想要更多一点 I sort of了解容器 Docker LXC 我不明白其中的区别 来使用称为libcontainer和 AuFS 使数十个 数百个甚至数千个
  • 如何从 lxc 挂载文件夹

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

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

    我有一个包含在 Docker 文件中的嵌入式系统开发映像 为了刷新代码 我需要通过 USB 串行连接到节点 例如 dev ttyACM0 对于 Docker 我使用了新的绑定安装功能 请参阅https github com dotcloud
  • 在 Docker Ubuntu 容器中启动 Xserver

    我的容器中安装了最少的 Ubuntu 并且希望运行 Xserver 我需要XServer 因为我的应用程序需要meshlabserver 而meshlabserver本身也需要Xserver 我安装了 xserver xorg 和所有其他软
  • 如何备份/移动 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 驱动程序不支持 Exec:如何解决这个问题?

    在 CoreOS 上使用 Docker 我有一个脚本调用 docker exec 这在 CoreOS 上工作得很好 但我也想在上面测试一下CircleCI http circleci com 当我尝试在 CircleCI 上运行该脚本时 我
  • 无法使用 SSH 连接到 docker 容器 [关闭]

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

随机推荐

  • 图像处理——Haar特征

    Haar特征最初是用来进行人脸特征的表示的 xff0c 最近重新看了SURF算法 xff0c 发现在生成特征点描述子的时候也有用到Haar特征 查看了一些博文 xff0c 自己整理一些 xff0c 方便以后复习 Haar特征分为三类 xff
  • TVM运行时系统

    本文翻译自TVM Runtime System tvm 0 9 dev0 documentation TVM的编译器栈开发和部署支持多种编程语言 在本文中 xff0c 我们将解释TVM运行时的关键元素 我们需要满足一些有趣的需求 部署 从p
  • 彻底解决anaconda虚拟环境中pip是全局pip 下载包自动到base环境而非虚拟环境的问题 No module named _abc报错解决

    删除系统变量中的 PYTHONHOME C ProgramData Anaconda3 同时需要将虚拟环境的Lib site package的路径添加至系统变量Path中 xff0c 否则还是会报没有 abc模块的错误
  • C++基础语法

    C语言作为程序化的开发语言 xff0c 适合处理较小规模的程序 xff0c 相对于大规模程序 xff0c C语言并不合适 xff0c 所以提出了C 43 43 语言 C 43 43 对C语言的加强主要表现在 1 命名空间 2 函数重载与运算
  • 什么是DOM对象?如何获取DOM对象?

    今天的web前端培训环节 xff0c 我们讲解一下DOM对象 DOM对象本质上是浏览器根据html标签生成的 JS对象 xff0c 它的所有的标签属性都可以在这个 JS对象上面找到 xff0c 修改这个对象的属性会自动映射到标签身上 DOM
  • 2021电赛F题数字识别和巡线部分

    文章之前12月发了一次 xff0c 但是我后来申请的免毕设后 xff0c 用到了一些文字 xff0c 所以删了这篇文章 xff0c 但是还是查重了 xff0c 于是我把一些程序讲解先删了 xff0c 等毕设结束后再编辑加上 这次电赛我没有准
  • STM32CubeMX的使用,配置DMA串口

    这次记录下最近调用的外设 DMA以前用得很少 xff0c 只通过ADC采集使用 xff0c 开启后就直接读那个数组就可以了 我对dma的理解就是不占用cpu xff0c 数据传输速度快 xff0c 可以直接从外设和内存间相互读取 目前的工作
  • Freertos利用队列传递变量值

    记录部分代码 void CreateTask xTaskCreate LED Task 34 LED 34 30 NULL 0 amp LED Handle xTaskCreate OLED Task 34 OLED 34 150 NULL
  • CubeMX调用DSP库

    踩坑记录 先下载库 下载安装完记得勾选 生成工程 把Cube库中对应型号文件夹中的DSP头文件复制到自己工程目录下 Middlewares ST ARM DSP Inc 编译 xff0c 此时会报错 xff0c 定位 复制对应系列芯片至 再
  • FreeRTOS 事件组

    实现功能 xff0c 当任务A B完成后执行串口任务 不同任务用不同的位表示 configUSE 16 BIT TICKS 61 1 bitx 0 7 xff1b configUSE 16 BIT TICKS设置为0 xff0c bitx
  • STM32 硬件SPI应用 WK2124串口扩展芯片

    根据官方实例代码修改而成 xff0c 具体寄存器参数请参考手册 全双工模式 xff0c 8位数据 xff0c 有效位为最高位 预分频结果最终在芯片工作范围内即可 SPI模式0 CS片选信号是自己用软件设定 仅列出读写寄存器修改 xff0c
  • Mapreduce单词计数的例子

    WordCount类 package org apache hadoop examples span class hljs comment 著名源文件存放的地方 span import java io IOException import
  • LCD12864驱动显示程序

    这里是用的并行写法 xff0c 后续会更新串行 并行缺点就是太占用io口了 xff0c 我其实更喜欢用串行 不过不是比赛要求都不怎么用了 lcd12864 c include 34 lcd12864 h 34 uchar code num
  • HC-SR501人体红外感应模块程序

    当感应到时 xff0c 输出一个高电平 这里我对io口进行了配置 xff0c 要不然读不到高电平 建议大家以后养成习惯 xff0c 对io口进行配置 xff0c stm32中会用到 在这里我额外提下 xff0c 一般在stm32中 浮空输入
  • HX711称重模块程序

    以上部分截自于厂家数据手册 include lt STC12C5A60S2 H gt include 34 lcd12864 h 34 unsigned long HX711 Buffer 61 0 unsigned long Weight
  • SYN6288中文语音合成 程序

    用到串口2 xff0c 因为串口1的话会影响下载 xff0c 需每次拔插线 include lt STC12C5A60S2 H gt include lt stdio h gt include lt math h gt include lt
  • STC单片机超声波程序

    SR05 xff0c 这款只能用定时器计算 include lt intrins h gt include 34 12864 h 34 include lt stdio h gt sbit RX 61 P1 6 sbit TX 61 P1
  • VTK学习-坐标系统

    写在前面 xff1a 这篇博客简要根据书本内容简要介绍一些VTK中要用到的坐标系统与空间变换 这一部分与计算机图形学结合更加紧密 想起之前也 被迫 研究过一段时间的计算机图形学中三维显示部分 xff0c 现在简单学一学 xff0c 提示一下
  • python出现进程已结束,退出代码为-1066598274 (0xC06D007E)的含义

    python出现进程已结束 xff0c 退出代码为 1066598274 0xC06D007E 的含义为你当前使用的某个包与其他相关的包版本之间发生冲突 解决方法 xff1a 卸载正在使用的当前包与相关包 重新安装一遍即可解决
  • lxc

    LXC为Linux Container的简写 Linux Container容器是一种内核 虚拟化技术 xff0c 可以提供轻量级的虚拟化 xff0c 以便隔离进程和资源 xff0c 而且不需要提供指令解释机制以及全虚拟化的其他复杂性 相当