1 概述
本段概述出自百度百科:https://baike.baidu.com/item/lxc/6014808
LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与传统虚拟化技术相比,它的优势在于:
(2)不需要指令级模拟;
(3)不需要即时(Just-in-time)编译;
(4)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制;
(5)避免了准虚拟化和系统调用替换中的复杂性;
(6)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
总结:Linux Container是一种轻量级的虚拟化的手段。
Linux Container提供了在单一可控主机节点上支持多个相互隔离的server container同时执行的机制。Linux Container有点像chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但又有别于虚拟机,因为lxc是一种操作系统层次上的资源的虚拟化。
本文将主要介绍lxc的相关命令使用介绍
2 安装
注意,lxc的相关包在epel源里,要配置好epel源仓库
查看lxc相关包,命令如下
yum list all | grep -i lxc
主要安装lxc和lxc-templates这两个包,其中,lxc-templates实现快速分发和构建系统
命令如下
yum -y install lxc lxc-templates
使用lxc
相关命令如下
lxc-attach lxc-config lxc-freeze lxc-stop lxc-wait
lxc-autostart lxc-console lxc-info lxc-top
lxc-cgroup lxc-create lxc-monitor lxc-unfreeze
lxc-checkconfig lxc-destroy lxc-snapshot lxc-unshare
lxc-clone lxc-execute lxc-start lxc-usernsexec
命令lxc-checkconfig 查看当前lxc的环境是否支持相关功能,显示enabled为支持
3 模板拷贝
lxc的模板文件,辅助安装某一目标操作系统的组件,本质上模本是一些脚本文件,执行手动配置的相关命令,设置一个容器,模板放在/usr/share/lxc/templates路径下
命令 lxc-create 通过制定模板进行创建容器
指定模板后,会通过互联网,通过对应配置,连接上对应的yum仓库,下载对应模板的对应的仓库的文件,安装相应模板系统。安装不指定根路径时,则默认根文件路径是/var/lib/lxc,要确保这个路径下有足够的空间可以安装
如果不想通过互联网的仓库进行安装,可以更改模板中的yum源为本地的yum源,主要更改baseurl,安装会更快,不用到互联网上安装,默认是安装一个最小化的包,
如下,更改lxc-centos模板中的yum源为本地光盘,禁用更新源
cp /usr/share/lxc/templates/lxc-centos /root/lxc-centos
vim /root/lxc-centos
[base]
name=local repository
baseurl="$repo"
EOF
elif [ ${basearch} = 'i386' ] || [ ${basearch} = 'x86_64' ]; then
cat <<EOF > $REPO_FILE
[base]
name=CentOS-$release - Base
mirrorlist=file:///cdrom/
[updates]
name=CentOS-$release - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$release&arch=$basearch&repo=updates
enabled=0
EOF
else
cat <<EOF > $REPO_FILE
[base]
name=CentOS-$release - Base
baseurl=http://mirror.centos.org/altarch/7/os/$basearch/
[updates]
name=CentOS-$release - Updates
baseurl=http://mirror.centos.org/altarch/7/updates/$basearch/
EOF
fi
4 创建桥
虚拟机要使用自己的网络名称空间,其中包括网络,因此,在创建虚拟机前,要设定虚拟网络,这样容器能够加入虚拟网络,使得容器能够拥有自己的网络。要让虚拟机能够访问网络有两种方式,一种是把容器的网络暴露出去,一种是使用net桥,使得容器能够使用物理机的网络,即所谓的物理桥,创建容器是 ,默认是自动关联上ifcfg-virbr0这个网卡
创建虚拟网卡步骤如下
编辑两个网卡
编辑物理网卡,将物理网卡的地址信息曲调,同时添加BRIDAGE选项为virbr0
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=f4944b1a-4b42-4bfe-a7de-9134c3623984
DEVICE=ens33
ONBOOT=yes
BRIDGE=virbr0
编辑虚拟网卡,保留网卡的物理ip地址信息,但是把网卡的name,device,type这几个选项进行更改,uuid要去掉
vim /etc/sysconfig/network-scripts/ifcfg-virbr0
TYPE=Bridge
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=virbr0
DEVICE=virbr0
ONBOOT=yes
修改完成后,重启网卡
systemctl restart network.service
5 生成虚拟机和相关命令
执行安装,会安装到/var/lib/lxc下,注意容器的名称是要唯一的,会生成一个密码,安装后可以更改
lxc-create 创建一个虚拟机centos7-mini,,模板文件为/root/lxc-centos,默认最小化安装
格式如下:
lxc-create -n NAME -t TEMPLATE_NAME
命令如下
lxc-create -n centos7-mini -t /root/lxc-centos
安装后文件由安装时的临时缓存路径被移动到对应路径/var/lib/lxc下面,安装过程有如下命令
Copy /var/cache/lxc/centos/x86_64/7/rootfs to /var/lib/lxc/centos7-mini/rootfs ...
Copying rootfs to /var/lib/lxc/centos7-mini/rootfs ...
文件拷贝完成后,则完成安装
初始的根用户的密码保存在文件/var/lib/lxc/centos7-mini/tmp_root_pass里面
更改密码命令如下
chroot /var/lib/lxc/centos7-mini/rootfs passwd
查看容器状态和信息
lxc-info --name centos7-mini
启动容器
lxc-start --name centos7-mini
lxc剥离退出终端用ctrl+a q退出,组合键可能不能用,因为可能是被crt工具占用了,默认启动容器后,sshd服务启动,因此可以被远程连接
停止容器
lxc-stop --name centos7-mini
删除处于停机状态的容器
lxc-destroy --name centos7-mini
创建和恢复快照
Lxc-snapshot
实现跨网络的简单实验,可以使用lxc来实现。每一个用户空间就是一个虚拟机
6 基于LXC-Web-Panel的页面管理
在github上有同样的panel的项目,可以实现页面管理创建容器,可以实现启动,停止,创建容器,该项目基于python开发,要安装python-flask软件,注意,这里python需要python2.x
yum -y install lxc lxc-templates yum -y install python-flask yum -y install git
把项目从git上克隆到本地
git clone https://github.com/lxc-webpanel/LXC-Web-Panel.git
移动到目录/usr/local下
mv LXC-Web-Panel/ /usr/local/ cd /usr/local/LXC-Web-Panel python lwp.py
此时会打开的5000端口
访问 http://ip:5000 账号和密码为admin
可以直接创建,克隆容器,注意这里要创建的时候,对/var/lib/lxc下要有对应的权限
转载于:https://blog.51cto.com/ghbsunny/2155006