2021-05-12 14:32:11
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
② 官網下載pip,https://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
② 網頁登入
③ 網頁功能:一些容器的控制;開啟,關閉,建立/克隆/重新啟動容器,調節容器資源限制... ...
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-09/153978.htm
相關文章