Docker 之 LXC介紹

1 概述python

本段概述出自百度百科:https://baike.baidu.com/item/lxc/6014808git

LXC爲Linux Container的簡寫。能夠提供輕量級的虛擬化,以便隔離進程和資源,並且不須要提供指令解釋機制以及全虛擬化的其餘複雜性。至關於C++中的NameSpace。容器有效地將由單個操做系統管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有衝突的資源使用需求。與傳統虛擬化技術相比,它的優點在於:github

(1)與宿主機使用同一個內核,性能損耗小;web

(2)不須要指令級模擬;flask

(3)不須要即時(Just-in-time)編譯;vim

(4)容器能夠在CPU核心的本地運行指令,不須要任何專門的解釋機制;centos

(5)避免了準虛擬化和系統調用替換中的複雜性;緩存

(6)輕量級隔離,在隔離的同時還提供共享機制,以實現容器與宿主機的資源共享。bash

總結:Linux Container是一種輕量級的虛擬化的手段。網絡

Linux Container提供了在單一可控主機節點上支持多個相互隔離的server container同時執行的機制。Linux Container有點像chroot,提供了一個擁有本身進程和網絡空間的虛擬環境,但又有別於虛擬機,由於lxc是一種操做系統層次上的資源的虛擬化。

本文將主要介紹lxc的相關命令使用介紹

安裝

注意,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

http://10.10.10.73:5000/

能夠直接建立,克隆容器,注意這裏要建立的時候,對/var/lib/lxc下要有對應的權限

相關文章
相關標籤/搜索