Docker系列02—LXC---Docker的“前身”


本文收錄在容器技術學習系列文章總目錄

一、LXC介紹

1、Linux Container容器是一種內核虛擬化技術,可以提供輕量級的虛擬化,以便隔離進程和資源。

2、LXC為Linux Container的簡寫。可以提供輕量級的虛擬化,以便隔離進程和資源,而且不需要提供指令解釋機制以及全虛擬化的其他復雜性。相當於C++中的NameSpace。容器有效地將由單個操作系統管理的資源划分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求。與傳統虛擬化技術相比,它的優勢在於:

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

(2)不需要指令級模擬;

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

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

(5)避免了准虛擬化和系統調用替換中的復雜性;

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

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

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

4、LXC與docker的關系

(1)Docker並不是LXC的替代品,Docker的底層就是使用了LXC來實現的。LXC將Linux進程沙盒化,使得進程之間相互隔離,並且能夠控制各進程的資源分配。
(2)在LXC的基礎之上,Docker提供了一系列更強的功能。

 

二、安裝使用lxc

1、簡單操作命令

lxc-checkconfig:

  檢查系統環境是否滿足容器使用要求;

lxc-create:創建lxc容器;

  lxc-create -n NAME -t TEMPLATE_NAME

lxc-start:啟動容器;

  lxc-start -n NAME -d

lxc-stop:停止容器;(停止命令很慢)

  lxc-stop -n NAME -d

lxc-info:查看容器相關的信息;

  lxc-info -n NAME

lxc-destory:刪除處於停機狀態的容器;

lxc-snapshot:創建和恢復快照;

 

2、安裝

(1)安裝lxc 和lxc 自帶的模板包

[root@centos7-1 ~]# yum -y install lxc lxc-templates  

(2)檢測環境

[root@centos7-1 ~]# lxc-checkconfig  

(3)創建名為c1 的容器

[root@centos7-1 ~]# lxc-create -n c1 -t /usr/share/lxc/templates/lxc-centos  

(4)安裝完以后,會顯示 在哪個目錄下,密碼存放在哪,和修改密碼的命令

[root@centos7-1 ~]# cat /var/lib/lxc/c1/tmp_root_pass 查詢密碼

[root@centos7-1 ~]# chroot /var/lib/lxc/c1/rootfs passwd 修改密碼

 

3、開啟一台lxc 容器

(1)嘗試開啟

[root@centos7-1 ~]# lxc-start -n c1 會報錯,沒有virbr0 網橋

 

(2)創建網橋

① 下包

[root@centos7-1 ~]# yum install bridge-utils -y

② 查看網橋信息

[root@centos7-1 ~]# brctl show

③ 創建virbr0 網橋

[root@centos7-1 ~]# brctl addbr virbr0

④ 查看網橋創建成功

[root@centos7-1 ~]# ip a |grep virbr0

⑤ 激活網橋

[root@centos7-1 ~]# ip link set dev virbr0 up

[root@centos7-1 ~]# ip a 查詢是否激活  

⑥ 配置網橋地址

[root@centos7-1 ~]# ip addr add 10.1.0.1/24 dev virbr0

 

(3)再次登錄

① 登錄

[root@centos7-1 ~]# lxc-start -n c1 輸入用戶密碼登錄

  ② 添加ip 地址10.1.0.2

[root@c1 ~]# ip addr add 10.1.0.2/24 dev eth0  

③ 測試與宿主機已經連通

[root@c1 ~]# ping 10.1.0.1

 

4、開啟第2台容器

① 創建c2

[root@centos7-1 ~]# lxc-create -n c2 -t /usr/share/lxc/templates/lxc-centos

② 改密碼

[root@centos7-1 ~]# chroot /var/lib/lxc/c2/rootfs passwd

③ 登錄

[root@centos7-1 ~]# lxc-start -n c2

④ 添加ip 地址10.1.0.3

[root@c2 ~]# ip addr add 10.1.0.3/24 dev eth0

⑤ 測試與宿主機和另一台容器c1 的連通

[root@c2 ~]# ping 10.1.0.1

[root@c2 ~]# ping 10.1.0.2

⑥ 在宿主機上,查詢容器狀況

[root@centos7-1 ~]# lxc-top

 

5、使容器連通外網

(1)在宿主機 配置 NAT規則

① 打開核心轉發

[root@centos7-1 ~]# sysctl -w net.ipv4.ip_forward=1

  ② 做NAT 規則

[root@centos7-1 ~]# iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 192.168.10.103

 

(2)在兩個容器內添加網關

[root@c1 ~]# ip route add default via 10.1.0.1 添加網關

[root@c1 ~]# ip route sh 查詢網關

[root@c1 ~]# ping www.baidu.com 測試網關是否生效

 

6、LXC 的web管理頁面

(1)下載git 項目

[root@centos7-1 ~]# git clone https://github.com/lxc-webpanel/LXC-Web-Panel.git

 

(2)安裝python-flask,因為該項目是Python開發

(a)下載安裝pip

① 准備安裝pip 環境

[root@centos7-1 ~]# wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg

[root@centos7-1 ~]# sh setuptools-0.6c11-py2.7.egg 

② 官網下載piphttps://pypi.org/project/pip/#files

③ 安裝

[root@centos7-1 ~]# tar xvf pip-10.0.1.tar.gz 解包

[root@centos7-1 ~]# cd pip-10.0.1/

[root@centos7-1 pip-10.0.1]# python setup.py install  

(b)使用pip安裝flask

[root@centos7-1 ~]# pip install python-flask

 

(3)開啟lxc web管理頁面的服務

① 開啟

[root@centos7-1 ~]# cd LXC-Web-Panel/

[root@centos7-1 LXC-Web-Panel]# python lwp.py

② 網頁登錄

③ 網頁功能:一些容器的控制;開啟,關閉,創建/克隆/重啟容器,調節容器資源限制... ...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM