偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux 容器的建立和簡(jiǎn)單管理

系統(tǒng) Linux
LXC 中文名稱就是 Linux 容器工具,容器可以提供輕量級(jí)的虛擬化,以便隔離進(jìn)程和資源。本文將循序漸進(jìn)地介紹 Linux 容器的建立和管理方法。本文使用的 Linux 發(fā)行版本是 Ubuntu 12.04 。

cgroups 簡(jiǎn)介

LXC 項(xiàng)目由一個(gè) Linux 內(nèi)核補(bǔ)丁和一些用戶空間(userspace) 工具組成。這些工具使用由補(bǔ)丁增加的內(nèi)核新特性,提供一套簡(jiǎn)化的工具來(lái)維護(hù)容器。2.6.29 版本后的 Linux 內(nèi)核版本已經(jīng)包含該補(bǔ)丁提供的大部分功能。所以強(qiáng)烈建議使用***的內(nèi)核源代碼。LXC 在資源管理方面依賴 Linux 內(nèi)核的 cgroups (Control Groups) 系統(tǒng),cgroups 系統(tǒng)是 Linux 內(nèi)核提供的一個(gè)基于進(jìn)程組的資源管理的框架,可以為特定的進(jìn)程組限定可以使用的資源。它最初由 Google 的工程師提出,后來(lái)被整合進(jìn) Linux 內(nèi)核。cgroups 也是 LXC 為實(shí)現(xiàn)虛擬化所使用的資源管理手段,可以說(shuō)沒(méi)有 cgroups 就沒(méi)有 LXC。cgroups 文件系統(tǒng)結(jié)構(gòu)見圖 1 。

圖 1.cgroups 文件系統(tǒng)結(jié)構(gòu)

相關(guān)名詞解釋

控制族群(control group):控制族群就是一組按照某種標(biāo)準(zhǔn)劃分的進(jìn)程。cgroups 中的資源控制都是以控制族群為單位實(shí)現(xiàn)。一個(gè)進(jìn)程可以加入到一個(gè)控制族群,也可以遷移到另一個(gè)控制族群。

層級(jí)(hierarchy)??刂谱迦嚎梢越M織成 hierarchical 的形式,既一顆控制族群樹。控制族群樹上的子節(jié)點(diǎn)控制族群是父節(jié)點(diǎn)控制族群的孩子,繼承父控制族群的特定的屬性。

子系統(tǒng)(subsytem)。一個(gè)子系統(tǒng)就是一個(gè)資源控制器,比如中央處理器子系統(tǒng)就是控制中央處理器時(shí)間分配的一個(gè)控制器。子系統(tǒng)必須附加(attach)到一個(gè)層級(jí)上才能起作用,一個(gè)子系統(tǒng)附加到某個(gè)層級(jí)以后,這個(gè)層級(jí)上的所有控制族群都受到這個(gè)子系統(tǒng)的控制。主要包括如下 9 個(gè)子系統(tǒng):

  • blkio : 這個(gè)子系統(tǒng)為塊設(shè)備設(shè)定輸入/輸出限制,比如物理設(shè)備(磁盤,固態(tài)硬盤,USB 等)。
  • cpu : 這個(gè)子系統(tǒng)使用調(diào)度程序提供對(duì) 中央處理器的 cgroup 任務(wù)訪問(wèn)。
  • cpuacct : 這個(gè)子系統(tǒng)自動(dòng)生成 cgroup 中任務(wù)所使用的中央處理器報(bào)告。
  • cpuset : 這個(gè)子系統(tǒng)為 cgroup 中的任務(wù)分配獨(dú)立中央處理器(在多核系統(tǒng))和內(nèi)存節(jié)點(diǎn)。
  • devices : 這個(gè)子系統(tǒng)可允許或者拒絕 cgroup 中的任務(wù)訪問(wèn)設(shè)備。
  • freezer : 這個(gè)子系統(tǒng)掛起或者恢復(fù) cgroup 中的任務(wù)。
  • memory : 這個(gè)子系統(tǒng)設(shè)定 cgroup 中任務(wù)使用的內(nèi)存限制,并自動(dòng)生成由那些任務(wù)使用的內(nèi)存資源報(bào)告。
  • net_cls : 這個(gè)子系統(tǒng)使用等級(jí)識(shí)別符(classid)標(biāo)記網(wǎng)絡(luò)數(shù)據(jù)包,可允許 Linux 流量控制程序(tc)識(shí)別從具體 cgroup 中生成的數(shù)據(jù)包。
  • ns :ns 子系統(tǒng)提供了一個(gè)將進(jìn)程分組到不同名稱空間的方法。在具體名稱空間中,進(jìn)程可彼此互動(dòng),但會(huì)與在其它名稱空間中運(yùn)行的進(jìn)程隔絕。這些分開的名稱空間在用于操作系統(tǒng)級(jí)別的虛擬化時(shí),有時(shí)也稱之為容器。

搭建***個(gè) LXC 虛擬計(jì)算機(jī)

本文使用的 Linux 發(fā)行版是 Ubuntu 12.10 ,首先安裝軟件包:

  1. #apt-get install lxc 

安裝軟件包后要檢查 Linux 發(fā)行版的內(nèi)核對(duì) LXC 的支持情況,可以使用下面命令 lxc-checkconfig 查看,見圖 2 。

圖 2.lxc-checkconfig 命令

lxc-checkconfig 命令檢查之后如果所有項(xiàng)目顯示“enabled”表示可以直接使用 LXC。#p#

建立一個(gè) Ubuntu Server LXC 虛擬計(jì)算機(jī)系統(tǒng)

使用如下命令構(gòu)建(執(zhí)行過(guò)程見圖)3:

  1. #lxc-create  -t  ubuntu -n cjhlxc1 

說(shuō)明這里使用的是 ubuntu 模板,模板文件保存在/usr/lib/lxc/templates/目錄下,這個(gè)目錄下還有其他模板,可以使用如下命令查看,命令輸出如下:

  1. # tree /usr/lib/lxc/templates/ 
  2. /usr/lib/lxc/templates/ 
  3. ├── lxc-busybox 
  4. ├── lxc-debian 
  5. ├── lxc-fedora 
  6. ├── lxc-opensuse 
  7. ├── lxc-sshd 
  8. ├── lxc-ubuntu 
  9. └── lxc-ubuntu-cloud 

圖 3.建立一個(gè) Ubuntu Server LXC 系統(tǒng)

 

說(shuō)明:安裝過(guò)程要持續(xù)一段時(shí)間,另外安裝過(guò)程要保證互聯(lián)網(wǎng)連接。

上面命令完成后, 會(huì)在 /var/lib/lxc 目錄中, 產(chǎn)生虛擬計(jì)算機(jī) cjhlxc1 ,它的目錄結(jié)構(gòu)見圖 4 。

圖 4.虛擬計(jì)算機(jī) cjhlxc1 目錄結(jié)構(gòu)

LXC 虛擬計(jì)算機(jī)的基本管理——了解 LXC 虛擬計(jì)算機(jī)的管理命令

LXC 常見命令說(shuō)明見表 1:

表 1 LXC 常見命令說(shuō)明

說(shuō)明:更加詳細(xì)的 lxc 命令列表和使用方法請(qǐng)讀者參考官方網(wǎng)站文檔。

圖 5 是主要 LXC 命令執(zhí)行過(guò)程的示意圖

圖 5.LXC 命令執(zhí)行過(guò)程的示意圖

#p#

LXC 常見命令說(shuō)明舉例

啟動(dòng) LXC 虛擬計(jì)算機(jī)

  1. # lxc-start  -n  cjhlxc1 

確實(shí)的賬號(hào)和密碼都是 ubuntu 然后登錄虛擬計(jì)算機(jī)見圖 6:

圖 6.登錄虛擬計(jì)算機(jī)

列出當(dāng)前系統(tǒng)所有的容器

檢查目前有哪幾個(gè)容器啟動(dòng)(若沒(méi)有任何結(jié)果,則目前都沒(méi)有容器啟動(dòng)):

  1. # lxc-ls 
  2. cjhlxc1 foo 

使用 console 登入容器第 3 個(gè)控制臺(tái):

  1. $ lxc-console -n cjhlxc1 –t 3 

說(shuō)明:如果沒(méi)有指定 -t N 選項(xiàng),則一個(gè)沒(méi)有被使用的控制臺(tái)將自動(dòng)選擇。要退出控制臺(tái),使用快捷鍵 Ctrl-a q 。

停止運(yùn)行一個(gè)容器:

  1. # lxc-stop -n cjhlxc1 

獲取一個(gè)容器的狀態(tài):

  1. # lxc-info -n ol6ctr1 

把一個(gè)容器銷毀:

  1. # lxc-destroy -n cjhlxc11 

復(fù)制一個(gè)容器:

  1. # lxc-clone -o cjhlxc1 -n ol6ctr2 

暫?;蚧謴?fù)一個(gè)容器:

  1. # lxc-freeze -n cjhlxc1 
  2. # lxc-unfreeze -n cjhlxc1 

LXC 虛擬網(wǎng)絡(luò)接口設(shè)置

了解 LXC 內(nèi)置的網(wǎng)絡(luò)架構(gòu)

不管是哪套虛擬系統(tǒng),只要是運(yùn)作在 Linux 系統(tǒng)架構(gòu)之內(nèi),所使用的虛擬網(wǎng)絡(luò)都是 Linux 系統(tǒng)缺省的虛擬網(wǎng)絡(luò)架構(gòu)(即 TAP/TUP, Bridge)圖 7 是示意圖 。

圖 7.LXC 虛擬網(wǎng)絡(luò)接口示意圖

圖 7 這個(gè)結(jié)構(gòu)中兩個(gè)容器使用 Veth Bridge,因?yàn)槟J(rèn)情況下,LXC 的模板腳本設(shè)置網(wǎng)絡(luò)都是基于 Veth Bridge。在這種模式下,容器從 dnsmasq 服務(wù)器獲取其 IP 地址。主機(jī)允許的容器連接到網(wǎng)絡(luò)的其余部分(使用 iptables 的 NAT 規(guī)則 ,但這些規(guī)則不允許傳入的連接到容器)。

除了 Veth Bridge 外,LXC 虛擬計(jì)算機(jī)還支持 Macvlan Bridge 和 Macvlan VEPA。有時(shí)我們可能需要一塊物理網(wǎng)卡綁定多個(gè) IP 以及多個(gè) MAC 地址,雖然綁定多個(gè) IP 很容易,但是這些 IP 會(huì)共享物理網(wǎng)卡的 MAC 地址,可能無(wú)法滿足我們的設(shè)計(jì)需求,所以有了 MACVLAN 設(shè)備,其工作

MACVLAN 會(huì)根據(jù)收到包的目的 MAC 地址判斷這個(gè)包需要交給哪個(gè)虛擬網(wǎng)卡。限于篇幅這里介紹 Macvlan Bridge 和 Macvlan VEPA,感興趣的用戶可以參考參考文獻(xiàn)中的介紹。

與 KVM 相同 LXC 安裝完成,缺省就會(huì)產(chǎn)生一個(gè)網(wǎng)絡(luò)接口(包含以下功能:交換機(jī)(Switch Hub) + DHCP 服務(wù)器 + NAT + Cache DNS 服務(wù)器),網(wǎng)絡(luò)接口名稱也就是 lxcbr0,可以通過(guò)如下命令驗(yàn)證:

  1. # brctl show 
  2. bridge name bridge id    STP enabled    interfaces 
  3. lxcbr0   8000.3eef2e882ac9  no   vetheCYpw4 

由上面的命令輸出圖就可以明顯看到 lxcbr0 的相關(guān)信息,而這個(gè)網(wǎng)絡(luò)接口,除了扮演交換機(jī)的功能之外,缺省也提供了 NAT 與 DHCP 的功能,簡(jiǎn)單來(lái)說(shuō)就是 lxcbr0 除了提供交換機(jī)的功能之外,也提供了 DHCP 服務(wù)與 DNS 緩存服務(wù) , 再通過(guò) iptables 啟動(dòng) NAT 的功能,由以下命令可以來(lái)證明,命令輸出如下:

  1. # iptables -t nat -L -n 
  2. Chain PREROUTING (policy ACCEPT) 
  3. target     prot opt source               destination 
  4. Chain INPUT (policy ACCEPT) 
  5. target     prot opt source               destination 
  6. Chain OUTPUT (policy ACCEPT) 
  7. target     prot opt source               destination 
  8. Chain POSTROUTING (policy ACCEPT) 
  9. target     prot opt source               destination 
  10. MASQUERADE  all  --  10.0.3.0/24         !10.0.3.0/24 

DHCP 服務(wù)與 DNS 緩存服務(wù)的功能,可以通過(guò)如下命令驗(yàn)證:

  1. #ps aux | grep lxc 

命令輸出見圖 8:

圖 8.查看 DHCP 服務(wù)與 DNS 緩存服務(wù)

#p#

修改 LXC 網(wǎng)絡(luò)接口的方法

一般我們是通過(guò)修改 lxcbr0 的設(shè)置文件的方法來(lái)實(shí)現(xiàn)的。通過(guò)〝ifconfig lxcbr0〞的命令,可以得知 lxcbr0 本身的 IP 地址,而由〝ps aux | grep dnsmasq〞的命令,也可以清楚看到 DHCP Server 分配的 IP 范圍,因此可以知道 LXC 缺省虛擬網(wǎng)絡(luò)預(yù)設(shè)的 IP 區(qū)段為 10.0.3.0/24,那么,這些信息,可以修改嗎?當(dāng)然可以,以上這些網(wǎng)絡(luò)信息,是 LXC 缺省預(yù)設(shè)的網(wǎng)絡(luò)設(shè)置,所以可以通過(guò)修改配置文件的方式,來(lái)修改相關(guān)信息,以符合實(shí)際應(yīng)用的狀況,可以利用編輯器來(lái)修改 LXC 的網(wǎng)絡(luò)配置文件:

  1. # vi /etc/default/lxc 

清單 1./etc/default/lxc 文件內(nèi)容:

  1. LXC_BRIDGE="lxcbr0" 
  2. LXC_ADDR="10.0.3.1" 
  3. LXC_NETMASK="255.255.255.0" 
  4. LXC_NETWORK="10.0.3.0/24" 
  5. LXC_DHCP_RANGE="10.0.3.2,10.0.3.254" 
  6. LXC_DHCP_MAX="253" 
  7. LXC_SHUTDOWN_TIMEOUT=120 

用戶修改后要重新啟動(dòng)網(wǎng)絡(luò)服務(wù),使用如下命令:

  1. #service lxc-net restart 

設(shè)置 LXC 使用物理網(wǎng)絡(luò)接口

相比 KVM 來(lái)說(shuō),LXC 可以直接使用物理網(wǎng)絡(luò)接口(比如在本文中物理網(wǎng)卡是 eth0、eth1,筆者準(zhǔn)備把 eth0 分配給 LXC 虛擬網(wǎng)絡(luò) )。首先使用“ ifconfig –a”命令查看一下,其中而 eth1 為實(shí)體計(jì)算機(jī)實(shí)際對(duì)外聯(lián)機(jī)所使用的網(wǎng)絡(luò)接口,所 eth0 ,就可以拿來(lái)設(shè)定給 LXC 虛擬計(jì)算機(jī)來(lái)使用。然后修改修改 LXC 虛擬計(jì)算機(jī)的配置文件:/var/lib/lxc/cjhlxc1/config。

  1. #vi /var/lib/lxc/cjhlxc1/config 

清單 2 /var/lib/lxc/cjhlxc1/config 文件內(nèi)容:

  1. lxc.network.type=phys 
  2. lxc.network.link=eth0 
  3. lxc.network.flags=up 
  4. lxc.utsname = cjhlxc1 
  5. #lxc.network.hwaddr = 00:16:3e:f9:ad:be #此行要注釋掉# 
  6. lxclxc.devttydir = lxc 
  7. lxc.tty = 4 
  8. lxc.pts = 1024 
  9. lxc.rootfs = /var/lib/lxc/myt2/rootfs 
  10. lxc.mount  = /var/lib/lxc/myt2/fstab 
  11. lxc.arch = amd64 
  12. lxc.cap.drop = sys_module mac_admin 
  13. lxc.pivotdir = lxc_putold 

修改完成后存盤退出。簡(jiǎn)單說(shuō)明一下以上參數(shù):

lxc.network.type 指定用于容器的網(wǎng)絡(luò)類型,包括四種類型:

  • empty:建立一個(gè)沒(méi)有使用的網(wǎng)絡(luò)接口
  • veth:容器將鏈接到 lxc.network.link 定義的網(wǎng)橋上,從而與外部通信。之前網(wǎng)橋必須在預(yù)先建立。
  • macvlan:一個(gè) macvlan 的接口會(huì)鏈接到 lxc.network.link 上。
  • phys: lxc.network.link 指定的物理接口分配給容器。

lxc.network.flags 用于指定網(wǎng)絡(luò)的狀態(tài),up 表示網(wǎng)絡(luò)處于可用狀態(tài)。

lxc.network.link 用于指定用于和容器接口通信的真實(shí)接口,比如一個(gè)網(wǎng)橋 br0 。

lxc.network.hwaddr 用于指定容器的網(wǎng)絡(luò)接口的 mac 地址。

下面修改主機(jī)網(wǎng)絡(luò)配置文件:

  1. #vim /etc/network/interface 

注意此時(shí)配置文件是空文件,沒(méi)有內(nèi)容。通??梢栽O(shè)置為固定 IP 地址模式(見清單 3)或者通過(guò) DHCP 服務(wù)器獲取 IP 地址模式(見清單 4)

清單 3.固定 IP 地址模式:

  1. auto lo 
  2. iface lo inet loopback 
  3. auto eth0 
  4. iface eth0 inet dhcp 
  5. dns-nameservers 10.0.0.4 

清單 4.通過(guò) DHCP 服務(wù)器獲取 IP 地址模式:

  1. auto lo 
  2. iface lo inet loopback 
  3. auto eth0 
  4. iface eth0 inet static 
  5. address 10.0.0.3 
  6. netmask 255.255.255.0 
  7. dns-nameservers 10.0.0.4 

修改完成后存盤退出。然后重新啟動(dòng)網(wǎng)絡(luò)服務(wù):

  1. #/etc/init.d/networking restart 

下面啟動(dòng) LXC 虛擬計(jì)算機(jī):

  1. # lxc-start  -n  cjhlxc1 

注意一旦 LXC 虛擬計(jì)算機(jī)啟動(dòng)成功,在宿主計(jì)算機(jī)上使用〝ifconfig -a〞查看主機(jī)網(wǎng)絡(luò)接口,用戶會(huì)發(fā)現(xiàn)此時(shí)網(wǎng)絡(luò)接口 eth0 消失了,只有 eth1 。這是因?yàn)?eth0 已經(jīng)讓 LXC 虛擬計(jì)算機(jī)給使用了。然后我們使用如下命令“ lxc-console -n cjhlxc1”登錄 LXC 虛擬計(jì)算機(jī)發(fā)現(xiàn)此時(shí) LXC 虛擬計(jì)算機(jī)的網(wǎng)絡(luò)接口是 eth0。然后我們可以使用 ping 命令測(cè)試一下 LXC 虛擬計(jì)算機(jī)和互聯(lián)網(wǎng)是否聯(lián)通。

總結(jié)

LXC 中文名稱就是 Linux 容器工具,容器可以提供輕量級(jí)的虛擬化,以便隔離進(jìn)程和資源,使用 LXC 的優(yōu)點(diǎn)就是不需要安裝太多的軟件包,使用過(guò)程也不會(huì)占用太多的資源,本文循序漸進(jìn)地介紹在 Linux 容器的建立和管理方法以及虛擬網(wǎng)絡(luò)接口的設(shè)置方法。

責(zé)任編輯:黃丹 來(lái)源: developerworks
相關(guān)推薦

2020-08-07 09:06:26

CaaS容器技術(shù)

2010-07-01 16:38:18

Linux TCP I

2009-03-18 09:45:32

教程管理用戶

2010-08-23 17:31:23

LinuxDHCP服務(wù)器

2015-08-04 10:26:44

OpenStackKubernetes容器管理

2010-05-14 16:41:58

MySQL鏡像數(shù)據(jù)庫(kù)

2011-03-02 15:47:37

PureftpdPureDBLinux

2010-08-04 11:18:45

Linux NFS

2010-06-10 14:49:56

MySQL鏡像數(shù)據(jù)庫(kù)

2020-09-28 15:00:19

Linux容器虛擬化

2017-06-13 16:40:42

Azure容器Kubernetes

2016-09-01 13:39:33

Linux鏡像XML 解析器

2011-09-07 15:20:48

svnUbuntu

2017-11-28 09:21:53

LinuxWindowsDocker

2023-09-15 10:15:43

Docker網(wǎng)絡(luò)

2010-06-04 14:31:59

Linux 查看進(jìn)程

2010-05-24 15:57:05

Linux SNMP

2010-03-01 16:13:06

Linux磁盤管理命令

2014-06-03 09:55:34

DockerLinux容器Ubuntu

2009-12-18 17:53:45

Linux Apach
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)