当前位置:首页 > CN2资讯 > 正文内容

容器 linux移植 linux容器化

2天前CN2资讯


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


更多的命令介绍可以再man page获得 [1]




lxc学习: 

lxc能做什么:

可以为容器绑定特定的cpu和memory,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。






T4:淘宝私有云 LXC: T4:淘宝私有云
http://vdisk.weibo.com/s/gNr1m?t=file


T4:淘宝私有云

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32284.html

    分享给朋友:

    “容器 linux移植 linux容器化” 的相关文章

    ColoCrossing怎么样?高性价比与稳定性的最佳选择分析

    ColoCrossing是一家自2003年起在网络主机市场崭露头角的公司,位于美国纽约州的布法罗市。这家公司以其稳定的性能和合理的价格而闻名,在美国的多个大城市设有数据中心,实现了从东海岸到西海岸的覆盖。这一遍布美国的基础设施,能够为各类业务提供灵活且可靠的网络服务。作为一个用户,我总能感受到Col...

    年抛域名的优势与续费注意事项,助您成功管理短期项目

    年抛域名是我在互联网世界中常遇到的一个概念,它们指的是那些注册时间为一年,使用者并不打算长期持有的域名。这类域名的价格往往比较低廉,非常适合一些短期项目或者测试用途。或许你有过这样的经历,想要尝试某个新项目,于是申请了一个年抛域名,一年后若不再需要,便无后顾之忧。这样的运作模式灵活高效,适合现代互联...

    选择野草云主机服务,享受高性价比与优质体验

    野草云是一家在2016年成立的主机服务提供商,由国人运营,专注于为中国大陆地区的用户提供优质的服务和产品。作为一家相对年轻的主机商,野草云力求用更贴近用户的方式来满足客户需求,特别是在国内市场需求快速增长的背景下,它的出现让很多用户找到了合适的主机选择。 说到野草云的历史背景,首先让我想起它在竞争激...

    RackNerd评测:高性价比VPS服务体验与优缺点分析

    谈到VPS主机服务,RackNerd无疑是近年来备受关注的一个名字。成立于2019年的RackNerd,以其高性价比和出色的客户服务,迅速在行业内站稳了脚跟。无论你是个人网站的博主,还是小型企业的运营者,RackNerd都能为你提供一个合适的解决方案。 RackNerd的主要数据中心遍布北美和欧洲,...

    elkupi - 提供灵活抗投诉主机服务的领先选择

    在我探寻各种主机服务商时,elkupi是个让我印象深刻的名字。这家公司在业内存在已久,专注于提供一些特殊主机服务,尤其是在欧美国家法律限制较多的情况下,elkupi的优势尤为明显。它不仅能容纳一些法律上不太允许的内容,在抗投诉方面也表现得非常出色,几乎可以忽略不计。这一特点无疑吸引了很多需要这类服务...

    CMI香港:助力企业洞察市场与消费者需求的关键工具

    在了解CMI香港之前,首先需要弄清楚CMI的定义与作用。CMI,即客户市场信息(Customer Market Insight),专注于帮助企业深入理解市场动态与消费者需求。简单来说,CMI就像是企业在市场中找到导航指南,确保它们能够精准地把握客户的期望、习惯及其变化。 当我们把视角转向香港,相信大...