1 概述python
本段概述出自百度百科:https://baike.baidu.com/item/lxc/6014808git
LXC爲Linux Container的簡寫。能夠提供輕量級的虛擬化,以便隔離進程和資源,並且不須要提供指令解釋機制以及全虛擬化的其餘複雜性。至關於C++中的NameSpace。容器有效地將由單個操做系統管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有衝突的資源使用需求。與傳統虛擬化技術相比,它的優點在於:github
(2)不須要指令級模擬;flask
(3)不須要即時(Just-in-time)編譯;vim
(4)容器能夠在CPU核心的本地運行指令,不須要任何專門的解釋機制;centos
(5)避免了準虛擬化和系統調用替換中的複雜性;緩存
(6)輕量級隔離,在隔離的同時還提供共享機制,以實現容器與宿主機的資源共享。bash
總結: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下要有對應的權限