`

lxc学习

 
阅读更多
lxc能做什么:
可以为容器绑定特定的cpu和memory,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。
默认的lxc配置是隔离pids(进程) sysv ipc(进程间通信),和挂载点。如果想运行sshd,就必须提供一个新的网络堆栈和hostname,如果想要避免文件冲突,需要重新挂载冲突文件到不同的地方。如果想要避免所有的冲突,你需要重新挂载一个文件系统。
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
更多的命令介绍可以再man page获得
http://manpages.ubuntu.com/manpages/lucid/man7/lxc.7.html
分享到:
评论

相关推荐

    lxc.rar_lxc

    标题 "lxc.rar_lxc" 暗示了这是一个与...综上所述,这个压缩包可能是一个结合了LXC技术的MATLAB图像处理教学实例,提供了一个可以在隔离环境中运行的阈值分割程序,对于学习LXC和图像处理的用户来说是一份宝贵的资源。

    lxc-pkg-ubuntu:LXC Ubuntu打包

    通过深入学习和实践,你可以掌握如何在Ubuntu Xenial环境中高效利用LXC技术,构建安全、可靠且易于管理的容器化应用程序或服务。这不仅有助于提升开发和运维的效率,还能充分利用资源,降低系统的复杂性。

    vagrant-lxc-k8s:使用Linux容器在本地运行多节点Kubernetes

    【vagrant-lxc-k8s:使用Linux容器在本地...这不仅提高了开发效率,还使测试和学习 Kubernetes 变得更加便捷。通过结合 Vagrant、LXC、Kubernetes、Ansible 等工具,我们可以构建出一套完整的本地开发和测试解决方案。

    LXC容器镜像制作的源码-go语言实现

    学习和使用`distrobuilder-2.0`,开发者需要具备一定的Go语言基础,理解LXC容器的工作原理,同时熟悉Linux系统的管理。通过深入研究源码,可以更好地了解容器镜像的构建流程,以及如何利用Go语言的特性来优化性能和...

    信息安全_数据安全_MI-LXC:a first step towards a fr.pdf

    在网络安全建设中,MI-LXC这样的解决方案可以作为培养安全人才的重要工具,帮助他们在实战中学习和提升技能。同时,对于组织来说,构建和维护这样一个平台也需要考虑隐私合规和安全评级,以确保所有的训练活动都在...

    一个基于LXD开系统容器的LXC与虚拟机KVM脚本,开小鸡不求人,让合租VPS更加方便.zip

    适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究...

    lxc.rar_java MVC_java温度计_文件处理

    【标题】"lxc.rar" 是一个包含多个Java项目的压缩包,主要涵盖了“Java MVC”、“Java温度计”以及“文件处理”的相关实践。这个压缩包的目的是帮助学习者深入理解Java编程的基本原理,尤其是如何在实际应用中运用...

    LXCTools:LXC 帮助程序脚本

    ### 学习与应用 要使用LXCTools,你需要对LXC的基本概念、Linux Shell脚本以及基本的网络配置有一定的了解。解压LXCTools-master压缩包后,阅读文档或示例脚本,理解其工作原理和调用方式,然后根据自己的需求定制...

    深度学习大数据分析计算平台.pdf

    Docker是一个LXC应用容器引擎,可以通过Docker进行系统资源的管理和分配,尤其是GPU等计算资源。 本文还介绍了基于容器技术的深度学习大数据分析计算平台的架构设计和实现。该平台的架构设计主要包括三个部分:容器...

    Laravel开发-proxmox

    Proxmox 是一款开源虚拟化管理平台,支持容器(LXC)和虚拟机(KVM)的部署与管理。这里,zzantares 的 proxmox composer 包可能是为了帮助开发者在 Laravel 中更好地与 Proxmox API 交互。 【描述】"Laravel开发-...

    saltstack-lxc-vagrant:用于设置SaltStack testdev环境的Vagrantfile

    总的来说,`saltstack-lxc-vagrant`提供了一种有效的方法,通过Vagrant和LXC在本地快速构建和管理SaltStack的testdev环境,这对 SaltStack 的开发、测试和学习都是极其有价值的。通过熟悉这个项目,你可以深入理解 ...

    Linux学习方法论

    3. **虚拟化技术**:了解并实践KVM、LXC等虚拟化技术,这对于构建私有云平台非常有用。 4. **容器技术**:学习Docker和Kubernetes,这是当前云计算领域的核心技术之一。 5. **自动化部署工具**:熟悉Ansible、Puppet...

    10264广东开放大学学习指引(答案)终版.pdf

    广东开放大学是一所以现代信息技术为支撑,面向全社会提供远程开放教育的新型高等教育机构,其...总的来说,广东开放大学为学习者提供了广泛的学习机会和个性化的学习路径,鼓励终身学习,促进个人和社会的持续发展。

    proxmox 个人学习资源

    标题 "proxmox 个人学习资源" 涵盖了Proxmox VE的相关学习资料,这是一个基于Debian的开源虚拟化平台,集成了KVM和LXC容器技术,提供了强大的虚拟化解决方案。这个压缩包中可能包括了作者的学习笔记、教程、配置示例...

    基于容器技术的机器学习计算平台设计与实现.pdf

    这篇论文《基于容器技术的机器学习计算平台设计与实现》主要探讨了如何利用容器技术,特别是LXC(Linux Containers)来构建一个适应普通高校使用的计算平台。LXC是一种轻量级的虚拟化技术,它允许在单一操作系统上...

    saf 10.1企业WEB无限制版

    “新手利器”暗示该软件可能有良好的学习曲线和丰富的教程资源,帮助新用户迅速掌握其使用方法。 【标签】"SAFE"直接关联到软件的名字,这通常是一个缩写,可能是"Secure Application for Enterprise"的简称,强调...

    ansible-lxc-rpc:Ansible Playbooks 部署 openstack

    《Ansible Playbooks 部署 OpenStack:深入解析与实践》 Ansible,作为一款强大的自动化运维工具,因其简洁的语法和强大的功能,被广泛应用于各类IT基础设施的部署和管理。...不断学习和实践,是掌握这个领域的关键。

    Ruby-RubyLXC是liblxc的一个Ruby绑定它能够让你利用Ruby脚本创建和管理Linux容器

    Ruby-LXC项目中的`ruby-lxc-master`可能是项目的源码仓库,包含了所有必要的文件和文档,供开发者学习和使用。这些文件可能包括源代码、测试用例、示例脚本以及安装和使用指南。开发者可以通过阅读源码了解其实现...

    Proxmox VE中文初级学习手册

    Proxmox VE 是一个开源的企业级虚拟化环境解决方案,它结合了KVM虚拟化技术和LXC容器技术。KVM是一种通过内核模块化的方式实现在Linux操作系统上运行的全虚拟化技术,而LXC是一种轻量级的虚拟化技术,允许在同一主机...

Global site tag (gtag.js) - Google Analytics