虚拟化实现之 LXC (四)

1.1 LXC是什么?

1.1.1 关于LXC

LXC,其名称来自Linux软件容器(Linux
Containers
)的缩写,一种操作系统层虚拟化(Operating system–level
virtualization)技术
,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的名字空间和共用API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。

在这里插入图片描述

图 – lxc官方logo

在Linux内核中,提供了cgroups功能,来达成资源的区隔化。它同时也提供了名称空间区隔化的功能,使应用程序看到的操作系统环境被区隔成*独立区间,包括进程树,网络,用户id,以及挂载的文件系统。*但是cgroups并不一定需要引导任何虚拟机。

LXC利用cgroups与名称空间的功能,提供应用软件一个独立的操作系统环境。LXC不需要Hypervisor这个软件层,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。软件Docker被用来管理LXC的环境。

1.1.2 关于操作系统层虚拟化

操作系统层虚拟化(英语:Operating system–level
virtualization
),一种虚拟化技术,这种技术将操作系统内核虚拟化,可以允许使用者空间软件物件(instances)被分割成几个独立的单元,在内核中运行,而不是只有一个单一物件运行。这个软件物件,也被称为是一个容器(containers),虚拟引擎(Virtualization
engine),虚拟专用服务器(virtual private
servers)或是 jails
。对每个行程的拥有者与使用者来说,他们使用的服务器程式,看起来就像是自己专用的。

操作系统层虚拟化之后,可以实现软件的即时迁移(Live
migration),使一个软件容器中的物件,即时移动到另一个操作系统下,再重新执行起来。但是在这种技术下,软件即时迁移,只能在同样的操作系统下进行。

在类Unix操作系统中,这个技术最早起源于标准的chroot机制,再进一步演化而成。除了将软件独立化的机制之外,内核通常也提供资源管理功能,使得单一软件容器在运作时,对于其他软件容器的造成的交互影响最小化。

1.1.3 LXC的特点

目前的LXC使用下列内核功能来控制进程:

🏄‍♂️ 内核命名空间(进程间通信、uts、mount、pid、network和user)

🏄‍♂️ AppArmor和SELinux配置

🏄‍♂️ Seccomp策略

🏄‍♂️ chroot(使用pivot_root)

🏄‍♂️ Kernel Capibilities

🏄‍♂️ 控制组(cgroups)

因此,LXC通常被认为介于“加强版”的chroot和完全成熟的虚拟机之间的技术。LXC的目标是创建一个尽可能与标准安装的Linux相同但又不需要分离内核的环境。

关于chroot可以参考:https://www.ibm.com/developerworks/cn/linux/l-cn-chroot/

1.1.4 LXC的应用

Docker:

它在0.9版之前都是使用LXC技术,但在0.9版之后,已不再是唯一且默认的运行环境。

Proxmox VE:

Proxmox
VE是一个开源的服务器虚拟化环境Linux发行版。基于Debian,使用基于Ubuntu的定制内核。

它直到4.0版才使用LXC技术,在此之前的版本都是使用OpenVZ技术。

1.2 安装LXC

1.2.1 环境说明

官方文档:https://linuxcontainers.org/lxc/getting-started/

安装LXC内核版本不能低于2.6.32,对lxc至此最佳的为Ubuntu系统。

宿主机环境说明:

[root@lxc ~]# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

[root@lxc ~]# uname -r

3.10.0-327.el7.x86_64

[root@lxc ~]# sestatus

SELinux status: disabled

[root@lxc ~]# hostname -I

172.16.1.100 10.0.0.100

安装lxc需要使用到epel源,这里使用的是aliyun源站

[root@lxc ~]# yum install epel-release -y

[root@lxc ~]# curl -o /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo

1.2.2 安装LXC

[root@lxc ~]# yum install lxc-* libcgroup* bridge-utils.x86_64 -y

包组说明

lxc lxc相关软件

libcgroup 资源管理,限制

bridge-utils 管理桥接网卡

1.2.3 修改网卡配置

创建桥接网卡

[root@lxc ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet

BOOTPROTO=none

NAME=eth0

DEVICE=eth0

ONBOOT=yes

BRIDGE=br0

[root@lxc ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0

TYPE=Bridge

BOOTPROTO=stati

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值