LXC---Docker的“前身”

Posted along21

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LXC---Docker的“前身”相关的知识,希望对你有一定的参考价值。

一、LXC介绍

1、Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。

2、LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优势在于:

(1)与宿主机使用同一个内核,性能损耗小;

(2)不需要指令级模拟;

(3)不需要即时(Just-in-time)编译;

(4)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;

(5)避免了准虚拟化和系统调用替换中的复杂性;

(6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。

总结:Linux Container是一种轻量级的虚拟化的手段。

3、Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。

4、LXC与docker的关系

(1)Docker并不是LXC的替代品,Docker的底层就是使用了LXC来实现的。LXC将Linux进程沙盒化,使得进程之间相互隔离,并且能够控制各进程的资源分配。
(2)在LXC的基础之上,Docker提供了一系列更强的功能。

 

二、安装使用lxc

1、简单操作命令

lxc-checkconfig:

  检查系统环境是否满足容器使用要求;

lxc-create:创建lxc容器;

  lxc-create -n NAME -t TEMPLATE_NAME

lxc-start:启动容器;

  lxc-start -n NAME -d

lxc-stop:停止容器;(停止命令很慢)

  lxc-stop -n NAME -d

lxc-info:查看容器相关的信息;

  lxc-info -n NAME

lxc-destory:删除处于停机状态的容器;

lxc-snapshot:创建和恢复快照;

 

2、安装

(1)安装lxc 和lxc 自带的模板包

[[email protected] ~]# yum -y install lxc lxc-templates  

(2)检测环境

[[email protected] ~]# lxc-checkconfig  

(3)创建名为c1 的容器

[[email protected] ~]# lxc-create -n c1 -t /usr/share/lxc/templates/lxc-centos  

(4)安装完以后,会显示 在哪个目录下,密码存放在哪,和修改密码的命令

[[email protected] ~]# cat /var/lib/lxc/c1/tmp_root_pass 查询密码

[[email protected] ~]# chroot /var/lib/lxc/c1/rootfs passwd 修改密码

技术分享图片

 

3、开启一台lxc 容器

(1)尝试开启

[[email protected] ~]# lxc-start -n c1 会报错,没有virbr0 网桥

技术分享图片

 

(2)创建网桥

① 下包

[[email protected] ~]# yum install bridge-utils -y

② 查看网桥信息

[[email protected] ~]# brctl show

③ 创建virbr0 网桥

[[email protected] ~]# brctl addbr virbr0

④ 查看网桥创建成功

[[email protected] ~]# ip a |grep virbr0

⑤ 激活网桥

[[email protected] ~]# ip link set dev virbr0 up

[[email protected] ~]# ip a 查询是否激活  

⑥ 配置网桥地址

[[email protected] ~]# ip addr add 10.1.0.1/24 dev virbr0

 

(3)再次登录

① 登录

[[email protected] ~]# lxc-start -n c1 输入用户密码登录

技术分享图片

  ② 添加ip 地址10.1.0.2

[[email protected] ~]# ip addr add 10.1.0.2/24 dev eth0  

③ 测试与宿主机已经连通

[[email protected] ~]# ping 10.1.0.1

技术分享图片

 

4、开启第2台容器

① 创建c2

[[email protected] ~]# lxc-create -n c2 -t /usr/share/lxc/templates/lxc-centos

② 改密码

[[email protected] ~]# chroot /var/lib/lxc/c2/rootfs passwd

③ 登录

[[email protected] ~]# lxc-start -n c2

④ 添加ip 地址10.1.0.3

[[email protected] ~]# ip addr add 10.1.0.3/24 dev eth0

⑤ 测试与宿主机和另一台容器c1 的连通

[[email protected] ~]# ping 10.1.0.1

[[email protected] ~]# ping 10.1.0.2

⑥ 在宿主机上,查询容器状况

[[email protected] ~]# lxc-top

技术分享图片

 

5、使容器连通外网

(1)在宿主机 配置 NAT规则

① 打开核心转发

[[email protected] ~]# sysctl -w net.ipv4.ip_forward=1

  ② 做NAT 规则

[[email protected] ~]# iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.10.103

 

(2)在两个容器内添加网关

[[email protected] ~]# ip route add default via 10.1.0.1 添加网关

[[email protected] ~]# ip route sh 查询网关

[[email protected] ~]# ping www.baidu.com 测试网关是否生效

 

6、LXC 的web管理页面

(1)下载git 项目

[[email protected] ~]# git clone https://github.com/lxc-webpanel/LXC-Web-Panel.git

 

(2)安装python-flask,因为该项目是Python开发

(a)下载安装pip

① 准备安装pip 环境

[[email protected] ~]# wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg

[[email protected] ~]# sh setuptools-0.6c11-py2.7.egg 

② 官网下载piphttps://pypi.org/project/pip/#files

技术分享图片

③ 安装

[[email protected] ~]# tar xvf pip-10.0.1.tar.gz 解包

[[email protected] ~]# cd pip-10.0.1/

[[email protected] pip-10.0.1]# python setup.py install  

(b)使用pip安装flask

[[email protected] ~]# pip install python-flask

 

(3)开启lxc web管理页面的服务

① 开启

[[email protected] ~]# cd LXC-Web-Panel/

[[email protected] LXC-Web-Panel]# python lwp.py

技术分享图片

② 网页登录

技术分享图片

③ 网页功能:一些容器的控制;开启,关闭,创建/克隆/重启容器,调节容器资源限制... ...

技术分享图片

 

以上是关于LXC---Docker的“前身”的主要内容,如果未能解决你的问题,请参考以下文章

“lxd”与 lxc/docker 有何不同?

是否可以将 USB 设备暴露给 LXC/Docker 容器?

Docker版本

认识docker

学习Docker容易陷进去的主要误区

Docker