用来行使和管理LXC容器,但仿佛平素尚未 Xen澳门永利官网

容器示例 – 配置python uliweb 开发环境

尝试在容器配置一遍开发条件, 然后经过复制容器, 形成七个虚拟机.

# 主机中
root@debian-113:~# uliweb   # 主机中没有安装uliweb 软件包
-bash: uliweb: command not found
root@debian-113:~# lxc-start -n test
# 虚拟机登录界面, 输入用户名和密码
# 虚拟机中
root@test:~# apt-get install python
root@test:~# apt-get install python-pip
root@test:~# pip install Uliweb
root@test:~# uliweb --version
Uliweb version is 0.3.1

长机中装置网桥, 虚拟机用桥接方式上网, 确认保障每一种虚拟机有独立的IP

# 主机中
root@debian-113:~# lxc-stop -n test
root@debian-113:~# apt-cache search bridge-utils
root@debian-113:~# brctl addbr br0
# 配置主机的网桥
root@debian-113:/var/lib/lxc/test# cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
#auto eth0
iface lo inet loopback

# 追加的网桥配置    
auto br0
iface br0 inet static
address 192.168.1.113
netmask 255.255.255.0
gateway 192.168.1.1
   bridge_ports eth0
   bridge_stp on
   bridge_fd 0

root@debian-113:/var/lib/lxc/test# /etc/init.d/networking restart

安插容器的互连网(也是在主机中期维修改容器的布局文件)

root@debian-113:/var/lib/lxc/test# cat /var/lib/lxc/test/config
... ... (很多默认生成的配置)

# network  <-- 这个 network 相关的是要追加的
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0

初步Linux容器, 进入虚拟机

root@debian-113:/var/lib/lxc/test# lxc-start -n test
# 登录进入虚拟机, 确认虚拟机的IP
root@test:~# cat /etc/network/interfaces  <-- 默认是自动获取IP
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
root@test:~# ifconfig   <-- 我的机器自动分配的 192.168.1.167
# 创建一个简单的uliweb工程
root@test:~# cd /home/
root@test:/home# mkdir CM-web
root@test:/home# cd CM-web/
root@test:/home/CM-web# uliweb makeproject test
root@test:/home/CM-web# cd test/
root@test:/home/CM-web/test# uliweb makeapp first_app
root@test:/home/CM-web/test# uliweb runserver -h 0.0.0.0

启航Web服务后, 就能够在主机的浏览器中 通过 http://192.168.1.167:8000/
来访问虚拟机中的web服务了.

终极, 复制贰个新的器皿, 相当于再重复生成三个下边包车型客车 python uliweb
开发环境

# 在主机中
root@debian-113:~# cd /var/lib/lxc
root@debian-113:/var/lib/lxc# cp -r test test2
# 修改 test2/config 如下
lxc.utsname = test2           <-- 修改名称
xc.rootfs = /home/lxc/test2   <-- 修改 rootfs位置
... ...                       <-- 其它部分不用修改, 和 test 一样就行
root@debian-113:/var/lib/lxc# cd /home/lxc/
root@debian-113:/home/lxc# cp -r test test2  <-- 重新复制一份 rootfs
root@debian-113:/home/lxc# lxc-start -n test2  <-- 启动 test2 虚拟机, 其中环境和 test一样, IP会不一样, 自动获取的
# 进入 test2 虚拟机中, 可以直接启动之前的 uliweb 测试工程, 也可以从主机中访问其web服务.

lxc-cgroup -n centos blkio.weight 500 

cgroups

cgroups 是将随机进度展开分组化管理的 Linux 内核效用.
经过cgroups能够使得的隔开各种进程, 同时还足以操纵进度的财富占用(CPU,
内部存款和储蓄器等等)意况.
使用示例: (debian v7.6 x86_64)

mount -t tmpfs cgroup_root /sys/fs/cgroup
mkdir /sys/fs/cgroup/test
mount -t cgroup -ocpuset test /sys/fs/cgroup/test

那儿, test目录就是三个 cgroup, 那里 -o 钦命了 cpuset,
cpuset是Linux中既定的一种cgroup, 前面有时光重新写博客详细介绍.
test 目录有cgroup必须的一一文件

cd /sys/fs/cgroup/test
ls -l
total 0
-rw-r--r-- 1 root root 0 Aug 14 14:34 cgroup.clone_children
--w--w--w- 1 root root 0 Aug 14 14:34 cgroup.event_control
-rw-r--r-- 1 root root 0 Aug 14 14:34 cgroup.procs
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.cpu_exclusive
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.cpus
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.mem_exclusive
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.mem_hardwall
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.memory_migrate
-r--r--r-- 1 root root 0 Aug 14 14:34 cpuset.memory_pressure
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.memory_pressure_enabled
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.memory_spread_page
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.memory_spread_slab
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.mems
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.sched_load_balance
-rw-r--r-- 1 root root 0 Aug 14 14:34 cpuset.sched_relax_domain_level
-rw-r--r-- 1 root root 0 Aug 14 14:34 notify_on_release
-rw-r--r-- 1 root root 0 Aug 14 14:34 release_agent
-rw-r--r-- 1 root root 0 Aug 14 14:34 tasks

里尾部分文件介绍.

文件名 R/W 用途
release_agent RW 删除分组时执行的命令. 这个文件只存在于根分组
notify_on_release RW 设置是否执行 release\_agent. 为1时执行
tasks RW 属于分组的线程 TID 列表
cgroup.procs R 属于分组的进程 PID 列表. 仅包括多线程进程的线程leader的TID, 这点与 tasks 不同
cgroup.event_control RW 监视状态变化的分组删除事件的配置文件

在cgroup中还足以建立子cgroup, 建立的主意很简短, 只要成立文件夹即可.

cd /sys/fs/cgroup/test
mkdir test-child
ls -l test-child    # 创建了文件夹之后, 自动生成cgroup需要的文件
total 0
-rw-r--r-- 1 root root 0 Aug 14 15:10 cgroup.clone_children
--w--w--w- 1 root root 0 Aug 14 15:10 cgroup.event_control
-rw-r--r-- 1 root root 0 Aug 14 15:10 cgroup.procs
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.cpu_exclusive
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.cpus
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.mem_exclusive
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.mem_hardwall
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.memory_migrate
-r--r--r-- 1 root root 0 Aug 14 15:10 cpuset.memory_pressure
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.memory_spread_page
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.memory_spread_slab
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.mems
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.sched_load_balance
-rw-r--r-- 1 root root 0 Aug 14 15:10 cpuset.sched_relax_domain_level
-rw-r--r-- 1 root root 0 Aug 14 15:10 notify_on_release
-rw-r--r-- 1 root root 0 Aug 14 15:10 tasks

留神, 删除子cgroup的时候, 要用 rmdir 来删除文件夹, 用 rm -rf
的情势不能删除

cd /sys/fs/cgroup/test
rmdir test-child

: 参考内核文书档案 Documentation/cgroups/cgroups.txt

Linux Container

Linux 容器的选择办法 (以下命令基于 debian v7.5)

  1. 安装 LXC

    apt-get install lxc
    lxc-checkconfig   # 安装完成后, 用这个命令检查系统是否可以使用 lxc
    # 我的debian系统上有个 missing
    Cgroup namespace: CONFIG_CGROUP_NSmissing
    # 对于这个missing, 可能是由于系统中没有挂载cgroup导致的, 挂载一个cgroup即可
    mount -t cgroup cgroup /mnt/cgroup
    
  2. 创建容器
    从现有模板创立容器, 比较慢, 须求下载

    # 创建一个 debian 系统
    lxc-create -n test -t debian
    

    那样成立的容器私下认可在 /var/lib/lxc/test 中,
    为了将容器创建在大家钦点的职责, 能够写个简易的配备文件
    lxc.conf, 里面只须求一句

    lxc.rootfs = /home/lxc/test
    

    然后,

    lxc-create -n test -t debian -f /path/to/lxc.conf
    

    那般, 就把容器创设在了 /home/lxc/test 中了, /var/lib/lxc/test
    中只有贰个 config文件(这么些config文件能够看作 lxc-create 命令 -f
    参数对应配置文件的参阅)

  3. 启航容器
    开首后就进行入了虚拟机的控制台了. (果然像传说一样, 几秒就运维成功了
    ^_^)

    lxc-start -n test
    
  4. 终止容器
    在主机中输入甘休的命令.

    lxc-stop -n test
    
  5. 销毁容器
    销毁此前, 能够通过 lxc-ls 来查阅有多少个容器

    lxc-ls
      test
    lxc-destroy -n test
    lxc-ls
    

: 参考URL –
http://obdnmagazine.blogspot.com/2013/07/tested-lxc-080-rc1-debian-wheezyax3a6.html

yum install libcgroup lxc lxc-libs lxc-templates bridge-utils
–enablerepo=epel

Linux 容器相关的3个非常重要概念

Linux容器功效是依照 cgroups 和 Namespace 来兑现的. 所以要询问 Linux
容器必须先了然 cgroup 和 Namespace.

##利用模板安装叁个centos 6 虚拟机

Namespace (命名空间)

使用Namespace, 能够让各种进度组有独立的PID, IPC和互联网空间.
Namespace的见效首假设透过 clone系统调用来贯彻的.
clone系统调用的第三个参数flags正是通过设置Namespace来划分能源的.
参数种类如下:

名称 说明
CLONE_NEWIPC 划分IPC(进程间通信)命名空间, 信号量(semaphore), 共享内存, 消息队列等进程间通信用的资源
CLONE_NEWNET 划分网络命名空间. 分配网络接口
CLONE_NEWNS 划分挂载的命名空间. 与chroot同样分配新的根文件系统
CLONE_NEWPID 划分 PID 命名空间. 分配新的进程ID空间
CLONE_NEWUTS 划分 UTS(Universal Time sharing System)命名空间. 分配新的 UTS 空间

环境:CentOS 6.5 x64

Linux 容器的使用

Linux 容器在 v2.6.29本子之后就加入到根本之中了, 在此以前虽说也闻讯过,
但一直从未太留心, 一贯使用 KVM 来制造虚拟机.
截止新近 Docker 大出风头, 才开始关切. 想打听一下 Linux 容器究竟是怎么样?
与存活虚拟机技术(Xen, KVM等)有如何界别?

Linux 容器技术出现的很早, 其实也是直接虚拟化技术, 但如同平昔未曾 Xen,
KVM 这个来的出名.
同时, 在落实原理上, 和Xen, KVM之类的也是有很大分别的.
上边简单表明下方今4类虚拟技术的界别: (上面表明中, VM:虚拟机, HOST:主机,
即安装虚拟机的机械)

  1. 观念的虚拟化技术 (VirtualBox, VMware)
    因此在Linux上安装虚拟化软件, 然后经过虚拟化软件来安装虚拟机系统,
    大概结构如下:

     VM1  VM2 VM3 … …                                   
                 VirtualBox or VMWare or …                
                    Linux Kernel                            
                     硬件                                   

    VM是由虚拟化软件(VirtualBox, VMWare…)来治本的, Linux
    Kernel无法直接保管到各种VM.

  2. Xen (半虚拟化)
    Xen是Linux上历史比较长的虚拟化技术, 它的虚拟化结构大体上如下:

     Linux Kernel  VM1  VM2 VM3 … …                     
                     Xen                                    
                     硬件                                   

    Xen的虚拟化原理是在 Linux Kernel和硬件之间投入一层 Xen代码,
    有Xen来管理Linux Kernel和任何的VM.

  3. KVM (最新的虚拟化技术)
    对照别的的虚拟化技术, KVM是相比新的, 它必要CPU的帮助.
    它的虚拟化结构大体上如下:

     VM1  VM2 VM3 … …                                   
                     KVM (由内核管理)                       
                    Linux Kernel                            
                     硬件                                   

    其一组织和价值观的虚拟化技术很类似, 有一些不一的是, KVM和Linux
    Kernel是紧凑结合的,
    故而Linux Kernel能够更好的军事管制 VMs,
    VM的性情会比古板的虚拟化技术更好.

  4. Linux 容器 (LXC – linux container)
    LXC 是老大轻量级的, 它将 VM 的经过也装作成 HOST 的进度.
    大概的协会如下:

     p1(HOST), p2(VM), p3(VM), p4(HOST)……               
                  Linux Kernel                              
                     硬件                                   

    那就是说, 对于一些系统经过, PID是一定的, 比如 init进程的PID=1, VM中的
    init进度的PID是什么样处理的吗?
    本来, VM的 init进程的PID在 HOST的长河表中会展现成其余PID(>1).

    从地点能够观望, LXC那种虚拟化, VM的长河仿佛HOST的长河一样运维, 管理,
    所以成立和销毁都以老大迅猛的.

: 参考
http://veck.logdown.com/posts/200566-compare-of-kvm-and-lxc

lxc.network.type = macvlan

##设置容器使用的CPU时间

-rwxr-xr-x 1 root root 27422 Aug 30  2014 lxc-gentoo

TYPE=Ethernet

total 328

##临时密码在

ONBOOT=yes

##设置虚拟机消耗的IO权重

-rwxr-xr-x 1 root root 12427 Aug 30  2014 lxc-ubuntu-cloud

-rwxr-xr-x 1 root root 10789 Aug 30  2014 lxc-alpine

lxc-start -n vm01 -d

lxc.network.type = veth

lxc-console -n vm01

lxc-clone vm01 webserver01 -s -B lvm

lxc-clone vm01 webserver01 -B lvm

##配置LXC桥接方式

##反省环境

BOOTPROTO=static

/var/lib/lxc/vm01/tmp_root_pass

[root@localhost templates]# ll /usr/share/lxc/templates

NM_CONTROLLED=no

BOOTPROTO=static

-rwxr-xr-x 1 root root 24183 Aug 30  2014 lxc-ubuntu

lxc-start -n vm01

BRIDGE=br0

/etc/init.d/cgconfig start

##安装容器只使用0,1三个CPU焦点

lxc.network.link = br0  #本条要和原先开立的网桥的名称对应

-rwxr-xr-x 1 root root 28387 Jun 23 18:06 lxc-centos

##监视lxc容器的财富选取

lxc.network.flags = up

-rwxr-xr-x 1 root root 13366 Aug 30  2014 lxc-altlinux

## -t:钦定成立虚拟机使用的模块,LXC别的指标如下

lxc-cgroup -n centos memory.limit_in_bytes 53687091 

##修改密码执行以下命令

lxc-stop -n vm01

vim /etc/sysconfig/network-scripts/ifcfg-br0 

###开辟上边网址配置虚拟机互联网项目化解

LXC项目自身只是2个用户空间的工具集(Userspace tools for the Linux Kernel
containers),用来利用和管理LXC容器。LXC在财富管理方面依赖与Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的1个基于进度组的财富管理的框架(参见笔者从前的一篇小说在此之前的cgroup简介),能够为特定的长河组限定能够动用的财富。LXC在切断控制地点依赖于Linux内核的namespace天性,具体而言正是在clone时插手相应的flag(NEWNS
NEWPID等等)。

USERCTL=no

##lxc暗中同意配置文件:/etc/lxc/default.conf 

UUID=edcf6721-480c-4433-af68-e20d783aea1c

##在CentOS中,LXC的几个默许的路径如下:

##开始打开lxc容器并进入开机console,

##模版脚本所在目录:/usr/share/lxc/templates 

###安插文件为/var/lib/lxc/vm01/config

http://windchasereric.blog.51cto.com/5419433/1759052

lxc-top

BRIDGE=br0

lxc-checkconfig

NM_CONTROLLED=no

##-n:钦定虚拟机的名目

HWADDR=00:0C:29:F5:79:81

##设置虚拟机可用内部存储器为512M

-rwxr-xr-x 1 root root 13961 Aug 30  2014 lxc-openmandriva

##在后台运营虚拟机,并经过console连接过去 (使用ctrl+a+q退出console)

rpm -Uvh
http://dl.fedoraproject.org/pub/epel/6/x86\_64/epel-release-6-8.noarch.rpm

##安装rpel

-rwxr-xr-x 1 root root 13705 Aug 30  2014 lxc-opensuse

-rwxr-xr-x 1 root root  9446 Aug 30  2014 lxc-busybox

UUID=edcf6721-480c-4433-af68-e20d783aea1c

chroot /var/lib/lxc/vm01/rootfs passwd

-rwxr-xr-x 1 root root 12158 Aug 30  2014 lxc-debian

-rwxr-xr-x 1 root root 10177 Aug 30  2014 lxc-cirros

是三个操作系统层的轻量级虚拟化技术,百度、腾讯等网络商行的PaaS平台湾大学多都施用了那项新技巧。和XEN,VMware和KVM等硬件抽象层的虚拟化技术相比,LXC更像是加强版的chroot。因为Linux
Containers不但没有对硬件设施实行虚假(指令集模拟),还足以采用主机的目录和文件等能源。容器能够在主导
CPU
本地运行指令,而不须求其余尤其的表达机制。所以,与历史观的HAL(硬件抽象层)层次的虚拟化技术相比较有以下优势:

-rwxr-xr-x 1 root root 47196 Aug 30  2014 lxc-fedora

##关门或删除容器

##一旦你想节约空间,克隆时带上 -s (–snapshot)
参数,可以创建贰个源容器的可读写快照

lxc.network.flags = up

lxc-cgroup -n centos cpuset.cpus 0-1 

-rwxr-xr-x 1 root root 17213 Aug 30  2014 lxc-download

XXXXXX 错误:lxc-create -n vm01 -t centos XXXXXX

DEVICE=eth0

cp /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-br0

lxc-info -n vm01

##修改LXC网络默许配置音信

##容器克隆

lxc-create -n centos6 -t /usr/share/lxc/templates/lxc-centos

ONBOOT=yes

-rwxr-xr-x 1 root root 35445 Aug 30  2014 lxc-oracle

lxc-destroy -n vm01

lxc.network.link = eth0

USERCTL=no

HWADDR=00:0C:29:F5:79:81

http://www.178linux.com/5351

##抑或直接写入容器的布局文件config中

-rwxr-xr-x 1 root root 11749 Aug 30  2014 lxc-plamo

##安装LXC

TYPE=Ethernet

[root@localhost templates]# cat /etc/lxc/default.conf

LXC与Docker关系:http://www.tiejiang.org/4883.html

[root@localhost network-scripts]# cat ifcfg-br0 

###设置后,虚拟机暗中同意位于/var/lib/lxc/vm01/rootfs,

-rwxr-xr-x 1 root root  6848 Aug 30  2014 lxc-sshd

###碰着标题:failed to attach ‘vethMA5FN1’ to the bridge ‘virbr0’ :
No such device,必须yum安装bridge-utils

CentOS 6 安装使用 LXC

b).
火速布置。利用LXC来隔离特定应用,只须求安装LXC,即可使用LXC相关命令来创立并运行容器来为利用提供虚拟执行环境。古板的虚拟化技术则须求先成立虚拟机,然后安装系统,再配备应用。

##布局容器的cgroup

##/usr/share/lxc/templates/
自带了常用的沙盘可供接纳,debian/ubuntu,centos/redhat 都有。

DEVICE=eth0

/etc/init.d/lxc start

[root@localhost ~]# chroot /var/lib/lxc/vm01/rootfs passwd

a).
更小的虚拟化费用。LXC的无数风味为主由基础特殊供应,相当于多少个加强版的chroot,开支相比较HAL的虚拟化小了累累。

##容器实例目录:/var/lib/lxc/ 

[root@localhost network-scripts]# cat ifcfg-eth0 

##启动LXC

##查看lxc容器相关音信(名称、是或不是在运维、PID,CPU使用、IO使用、内部存款和储蓄器使用、IP地址、网络吞吐量)

-rwxr-xr-x 1 root root 10251 Aug 30  2014 lxc-archlinux

##修改虚拟机的root密码:

lxc.network.macvlan.mode = bridge