簡述Linux容器和lxc

一夭委、linux容器

Linux 容器 (LXC - linux container)

  • LXC 是非常輕量級(jí)的, 它將 VM 的進(jìn)程也偽裝成 HOST 的進(jìn)程. 與提供硬件虛擬化機(jī)制的虛擬機(jī)不同既棺,容器通過對(duì)“用戶空間”的抽象化處理提供操作系統(tǒng)層級(jí)的虛擬化機(jī)制。通過對(duì)容器進(jìn)行分解厘唾,大家將可以非常清晰地理解其中含義。
  • 出于各種考量與需求预麸,容器在外觀上與虛擬機(jī)非常相似滔驶。舉例來說,二者皆擁有專有處理空間什燕、能夠作為root執(zhí)行命令粘勒、提供專有網(wǎng)絡(luò)接口與IP地址、允許定制化路由及iptable規(guī)則屎即,且可啟動(dòng)文件系統(tǒng)等等庙睡。
  • 容器與虛擬機(jī)間的最大區(qū)別在于事富,各容器系統(tǒng)共享主機(jī)系統(tǒng)的內(nèi)核


    容器和虛擬機(jī)結(jié)構(gòu)區(qū)別

2、Linux 容器相關(guān)的2個(gè)重要概念

  • Linux容器功能是基于 cgroups 和 Namespace 來實(shí)現(xiàn)的. 所以要了解 Linux 容器必須先了解 cgroup 和 Namespace.
cgroups(控制組)
  • cgroups 是將任意進(jìn)程進(jìn)行分組化管理的 Linux 內(nèi)核功能.通過cgroups可以有效的隔離各類進(jìn)程, 同時(shí)還可以控制進(jìn)程的資源占用(CPU, 內(nèi)存等等)情況.
Namespace (命名空間)
  • 使用Namespace, 可以讓每個(gè)進(jìn)程組有獨(dú)立的PID, IPC和網(wǎng)絡(luò)空間.
    Namespace的生效主要是通過 clone系統(tǒng)調(diào)用來實(shí)現(xiàn)的.
    clone系統(tǒng)調(diào)用的第3個(gè)參數(shù)flags就是通過設(shè)置Namespace來劃分資源的.

二乘陪、lxc概述

image.png
  • LXC為Linux Container的簡寫统台。可以提供輕量級(jí)的虛擬化啡邑,以便隔離進(jìn)程和資源贱勃,而且不需要提供指令解釋機(jī)制以及全虛擬化的其他復(fù)雜性。相當(dāng)于C++中的NameSpace谤逼。容器有效地將由單個(gè)操作系統(tǒng)管理的資源劃分到孤立的組中贵扰,以更好地在孤立的組之間平衡有沖突的資源使用需求。與傳統(tǒng)虛擬化技術(shù)相比流部,它的優(yōu)勢在于:
    • (1)與宿主機(jī)使用同一個(gè)內(nèi)核戚绕,性能損耗小贵涵;
    • (2)不需要指令級(jí)模擬列肢;
    • (3)不需要即時(shí)(Just-in-time)編譯;
    • (4)容器可以在CPU核心的本地運(yùn)行指令宾茂,不需要任何專門的解釋機(jī)制瓷马;
    • (5)避免了準(zhǔn)虛擬化和系統(tǒng)調(diào)用替換中的復(fù)雜性;
    • (6)輕量級(jí)隔離跨晴,在隔離的同時(shí)還提供共享機(jī)制欧聘,以實(shí)現(xiàn)容器與宿主機(jī)的資源共享。
  • Linux Container提供了在單一可控主機(jī)節(jié)點(diǎn)上支持多個(gè)相互隔離的server container同時(shí)執(zhí)行的機(jī)制端盆。Linux Container有點(diǎn)像chroot怀骤,提供了一個(gè)擁有自己進(jìn)程和網(wǎng)絡(luò)空間的虛擬環(huán)境,但又有別于虛擬機(jī)焕妙,因?yàn)閘xc是一種操作系統(tǒng)層次上的資源的虛擬化蒋伦。

三、lxc的簡單應(yīng)用

1焚鹊、安裝

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

2痕届、簡單使用

  • lxc-checkconfig:檢查系統(tǒng)環(huán)境是否滿足容器使用要求;
[root@node-64 ~]# lxc-checkconfig
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-3.10.0-693.el7.x86_64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
newuidmap is not installed
newgidmap is not installed
Network namespace: enabled
Multiple /dev/pts instances: enabled

--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled

--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
Bridges: enabled
Advanced netfilter: enabled
CONFIG_NF_NAT_IPV4: enabled
CONFIG_NF_NAT_IPV6: enabled
CONFIG_IP_NF_TARGET_MASQUERADE: enabled
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled

--- Checkpoint/Restore ---
checkpoint restore: enabled
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities: enabled

Note : Before booting a new kernel, you can check its configur
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig   #也可以指明配置文件路徑

lxc-create:創(chuàng)建lxc容器末患;

格式:lxc-create -n NAME -t TEMPLATE_NAME
lxc-start:啟動(dòng)容器研叫;
lxc-start -n NAME -d
lxc-info:查看容器相關(guān)的信息;
lxc-info -n NAME
lxc-console:附加至指定容器的控制臺(tái)璧针;
lxc-console -n NAME -t NUMBER
lxc-stop:停止容器嚷炉;
lxc-destory:刪除處于停機(jī)狀態(tài)的容器;
lxc-snapshot:創(chuàng)建和恢復(fù)快照探橱;

lxc自帶了很多模板申屹,可以修改對(duì)應(yīng)模板中的配置

[root@node-64 ~]# ls /usr/share/lxc/templates/
lxc-alpine     lxc-busybox  lxc-debian    lxc-gentoo        lxc-oracle  lxc-ubuntu
lxc-altlinux   lxc-centos   lxc-download  lxc-openmandriva  lxc-plamo   lxc-ubuntu-cloud
lxc-archlinux  lxc-cirros   lxc-fedora    lxc-opensuse      lxc-sshd

有需要可修改對(duì)應(yīng)模板中倉庫url绘证,這里使用默認(rèn)即可

[base]
name=CentOS-$release - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$release&arch=$basearch&repo=os
baseurl=https:// xxxxxx #修改倉庫路徑

創(chuàng)建容器

[root@node-64 templates]# lxc-create --name c1 -t centos

#容器創(chuàng)建后會(huì)自動(dòng)生成一個(gè)秘碼,可以使用下面命令修改秘碼
[root@node-64 templates]# chroot /var/lib/lxc/c1/rootfs passwd

#查詢?nèi)萜餍畔?[root@node-64 templates]# lxc-info --name c1

給新創(chuàng)建的容器創(chuàng)建網(wǎng)絡(luò)哗讥,首先創(chuàng)建網(wǎng)橋

#安裝網(wǎng)橋工具
[root@node-64 ~]# yum install bridge-utils -y
#添加virbr0網(wǎng)橋
[root@node-64 ~]# brctl addbr virbr0
# 啟動(dòng)virbr0網(wǎng)橋
[root@node-64 ~]# ip link set dev virbr0 up
#給網(wǎng)橋添加地址
[root@node-64 ~]# ip addr add 10.0.0.254/24 dev virbr0
[root@node-64 ~]# ip addr l
...........
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether fe:36:d4:87:44:87 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.254/24 scope global virbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::8849:9bff:fe03:38ab/64 scope link 
       valid_lft forever preferred_lft forever

#打開核心轉(zhuǎn)發(fā)
[root@node-64 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
[root@node-64 ~]# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE


啟動(dòng)容器

[root@node-64 ~]# lxc-start --name c1
CentOS Linux 7 (Core)
Kernel 3.10.0-693.el7.x86_64 on an x86_64

c1 login: root
Password:輸入密碼登錄容器

給容器配置網(wǎng)絡(luò)

#添加ip地址
[root@c1 ~]# ip addr add 10.0.0.1/24 dev eth0
[root@c1 ~]# ip a l
........
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fe:64:24:53:c6:53 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.0.1/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::fc64:24ff:fe53:c653/64 scope link 
       valid_lft forever preferred_lft forever

#添加路由
[root@c1 ~]# ip route add 0.0.0.0/0.0.0.0 via 10.0.0.254
[root@c1 ~]# ip route l
default via 10.0.0.254 dev eth0 
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1 

#測試ping虛擬網(wǎng)橋
[root@c1 ~]# ping 10.0.0.254
#測試ping宿主機(jī)
[root@c1 ~]# ping 192.168.1.64
#測試ping外網(wǎng)
[root@c1 ~]# ping www.baidu.com

查詢?nèi)萜鬟\(yùn)行情況

[root@node-64 ~]# lxc-top
Container            CPU      CPU      CPU      BlkIO        Mem
Name                Used      Sys     User      Total       Used
c1                  0.13     0.08     0.03  784.00 KB    1.51 MB
TOTAL (1 )          0.13     0.08     0.03  784.00 KB    1.51 MB

四迈窟、lxc的圖形管理界面

安裝圖形管理界面
#安裝依賴
[root@node-64 ~]# yum install python-flask  git -y

#克隆下載
[root@node-64 ~]# git clone https://github.com/lxc-webpanel/LXC-Web-Panel.git

#啟動(dòng)
[root@node-64 ~]# ls
anaconda-ks.cfg  LXC-Web-Panel
[root@node-64 ~]# cd LXC-Web-Panel/
[root@node-64 LXC-Web-Panel]# python lwp.py
 * Running on http://0.0.0.0:5000/  #啟動(dòng)端口

LXC Web登錄

LXC Web管理頁面

參考鏈接:https://www.cnblogs.com/wang_yb/p/3923040.html
https://baike.baidu.com/item/lxc/6014808

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市忌栅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌曲稼,老刑警劉巖索绪,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贫悄,居然都是意外死亡瑞驱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門窄坦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唤反,“玉大人,你說我怎么就攤上這事鸭津⊥蹋” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵逆趋,是天一觀的道長盏阶。 經(jīng)常有香客問我,道長闻书,這世上最難降的妖魔是什么名斟? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮魄眉,結(jié)果婚禮上砰盐,老公的妹妹穿的比我還像新娘。我一直安慰自己坑律,他們只是感情好岩梳,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脾歇,像睡著了一般蒋腮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上藕各,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天池摧,我揣著相機(jī)與錄音,去河邊找鬼激况。 笑死作彤,一個(gè)胖子當(dāng)著我的面吹牛膘魄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竭讳,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼创葡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绢慢?” 一聲冷哼從身側(cè)響起灿渴,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胰舆,沒想到半個(gè)月后骚露,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缚窿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年棘幸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倦零。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡误续,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扫茅,到底是詐尸還是另有隱情蹋嵌,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布葫隙,位于F島的核電站欣尼,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏停蕉。R本人自食惡果不足惜愕鼓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慧起。 院中可真熱鬧菇晃,春花似錦、人聲如沸蚓挤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灿意。三九已至估灿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缤剧,已是汗流浹背馅袁。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荒辕,地道東北人汗销。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓犹褒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弛针。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叠骑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一、Docker 簡介 Docker 兩個(gè)主要部件:Docker: 開源的容器虛擬化平臺(tái)Docker Hub: 用...
    R_X閱讀 4,382評(píng)論 0 27
  • Docker容器技術(shù)已經(jīng)發(fā)展了好些年削茁,在很多項(xiàng)目都有應(yīng)用宙枷,線上運(yùn)行也很穩(wěn)定。整理了部分Docker的學(xué)習(xí)筆記以及新...
    __七把刀__閱讀 11,435評(píng)論 0 59
  • 我喜歡將飛行時(shí)的兩三個(gè)小時(shí)用來讀讀書茧跋。在一個(gè)相對(duì)遠(yuǎn)離了地心引力的高空中朦拖,讀上兩三篇散文,那一段時(shí)間里厌衔,什么都不用想...
    李楊手記閱讀 487評(píng)論 3 1
  • 情不知所起富寿,一往而情深。前段時(shí)間朋友圈里都在曬電影——我的前任3锣夹。 看過的人页徐,據(jù)說都哭的撕心裂肺。我親眼目睹了我的...
    芳華似水閱讀 616評(píng)論 0 1
  • 王菲在《幻樂之城》的綜藝首秀,想必給很多人帶去了驚喜贴唇,無不驚嘆《重慶森林》里古怪精靈搀绣、心思剔透的阿菲又回來了。 蓬...
    弛雪由疆閱讀 6,719評(píng)論 0 2