Linux Container(LXC容器)的基本命令使用簡介

來源:互聯網
上載者:User

lxc能做什麼:
可以為容器綁定特定的cpu和memory,分配特定比例的cpu時間、IO時間,限制可以使用的記憶體大小(包括記憶體和swap空間),提供device存取控制,提供獨立的namespace(網路、pid、ipc、mnt、uts)。
預設的lxc配置是隔離pids(進程) sysv ipc(處理序間通訊),和掛載點。如果想運行sshd,就必須提供一個新的網路堆棧和hostname,如果想要避免檔案衝突,需要重新掛載衝突檔案到不同的地方。如果想要避免所有的衝突,你需要重新掛載一個檔案系統。
lxc的實現:
Sourceforge上有LXC這個開源項目,但是LXC項目本身只是一個為使用者提供一個使用者空間的工具集,用來使用和管理LXC容器。LXC真正的實現則是靠Linux核心的相關特性,LXC項目只是對此做了整合。基於容器的虛擬化技術起源於所謂的資源容器和安全容器。
LXC在資源管理方面依賴與Linux核心的cgroups子系統,cgroups子系統是Linux核心提供的一個基於進程組的資源管理的架構,可以為特定的進程組限定可以使用的資源。LXC在隔離控制方面依賴於Linux核心的namespace特性,具體而言就是在clone時加入相應的flag(NEWNS  NEWPID等等)。
lxc常見命令使用:
lxc-version用於顯示系統LXC的版本號碼(可以通過此命令判斷系統是否安裝了lxc)
用法:lxc-version
例如:

代碼如下:

lxc-version
lxc-checkconfig用於判斷linux核心是否支援LXC
用法:lxc-checkconfig
例如:

代碼如下:

lxc-checkconfig
lxc-create用於建立一個容器
用法:lxc-create -n name [-f config_file]
         -n 後面跟要建立的容器名字 例如:-n foo
         -f 後面跟容器設定檔的路徑
註:1.採用lxc-create建立的容器,在停止運行後,不會被銷毀,要採用lxc-destroy命令才能銷毀
       2.容器命令空間是全域的,系統中不允許存在重名的容器,如果-n 後面跟一個已經存在的容器名,建立會失敗
例如:

代碼如下:

lxc-create --n foo --f foo.conf
lxc-execute用於在一個容器執行應用程式
用法: lxc-execute -n name [-f config_file] [ -s KEY=VAL ]command
           -n 後面跟容器名字(容器名字用於管理容器)例如:-n foo
           -f 後面跟容器設定檔的路徑(如果沒有設定檔,可以直接用-s指定配置選項,如果什麼都沒有,系統採用預設策略)例如:-f foo.conf
           -s 後面跟配置索引值對

           例如:lxc.cgroup.cpu.shares=512command 為要執行的命令

           例如:/bin/bash這個命令會mount /proc 並且會自動建立/銷毀容器。

註:1.如果容器還不存在,lxc-execute會自動建立一個,容器停止運行後會被自動銷毀
       2.用lxc-execute啟動應用程式,配置優先順序如下:
          如果指定-f選項,那麼之前建立容器(如果容器是已存在的)的設定檔不會被使用
          如果指定-s選項,則在命令列中的配置索引值對會覆蓋設定檔(無論之前的還是-f指定的)相同配置
例如:

代碼如下:

lxc-execute --n foo --s lxc.cgroup.cpu.shares=512 /bin/bash
使用實際例子:    

代碼如下:

lxc-execute -n test /bin/bash
這個會啟動一個lxc並給出類似的一個cmd視窗,網路是與作業系統共用的,這裡好像僅僅是建立了一個命名空間
如果沒有指定-f,預設的隔離將被使用,這個命令當你需要一個快速在一個隔離的環境中運行程式。在物理機上和container中都會運行lxc-init,在宿主機上面,這個程式用於轉寄lxc-kill  訊號到已經啟動的程式中 ,在container中,這個程式的pid為1,它會fork出要執行的命令(pid為2)並執行。
lxc-start用於在容器中執行給定命令
用法:lxc-start  -n name [-f config_file] [-c console_file] [-d] [-s KEY=VAL][command]
      -d 將容器當做守護進程執行
     -f  後面跟設定檔
     -c 指定一個檔案作為容器console的輸出,如果不指定,將輸出到終端
    -s 指定配置
如果沒有指定命令,lxc-start 將要運行 /sbin/init
例如:

代碼如下:

lxc-start -n foo -f foo.conf -d /bin/bash
註:1.如果容器還不存在,lxc-start會自動建立一個,容器停止運行後會被自動銷毀
       2.lxc-start配置優先順序與lxc-execute相同
       3.lxc-start 與lxc.execute的異同:
         lxc-start 和  lxc-execute都可以在容器中啟動進程,區別在於lxc-start直接建立進程,lxc-execute先建立lxc-init進程,然後在lxc-init中fork一個進程來執行。(關於第4點,lxc-init所佔的是一個什麼樣的地位?)
       The orphan process group and daemon are not supported by this  command,
       use the lxc-execute command instead
       If no command is specified, lxc-start will use the default "/sbin/init"
       command to run a system container.
      4.lxc-start用於在容器啟動system,lxc-execute用於在容器執行應用程式
lxc-kill發送訊號給容器中的第一個使用者進程(容器內部進程號為2的進程)
用法:lxc-kil -n name SIGNUM
      -n 後面跟容器名
      SIGNUM  訊號 (此參數可選,預設SIGKILL)
例如:

代碼如下:

lxc-kill -n foo
lxc-stop用於停止容器中所有的進程
用法:lxc-stop -n name
       -n後面跟要停止的容器名
例如:

代碼如下:

lxc-stop --n foo
lxc-destroy用於銷毀容器
用法:lxc-destroy -n name
       -n後面跟要停止的容器名
例如:

代碼如下:

lxc-destroy --n foo
lxc-cgroup用於擷取或調整與cgroup相關的參數
用法:lxc-cgroup -n name subsystem value
        -n 後面跟要調整的容器名
例如:

代碼如下:

lxc-cgroup -n foo devices.list
lxc-cgroup -n foo cpuset.cpus "0,3"
lxc-info使用者擷取一個容器的狀態
 用法:lxc-info -n name
       -n後面跟操作的容器名
例如:

代碼如下:

lxc-info --n foo
註:容器的狀態有:STARTING RUNNING STOPPING STOPPED ABORTING
lxc-monitor監控一個容器狀態的變換,當一個容器的狀態變化時,此命令會在螢幕上列印出容器的狀態
用法:lxc-monitor -n name
例如:

代碼如下:

lxc-monitor -n foo
lxc-ls列出當前系統所有的容器
用法:lxc-ls
例如:

代碼如下:

lxc-ls
lxc-ps列出特定容器中啟動並執行進程
用法:lxc-ps
例如:

代碼如下:

lxc-ps -n foo

查看和調整容器的優先順序

代碼如下:

lxc-priority -n name
lxc-priority -n name -p priority

持續觀察容器的狀態和優先順序變化:

代碼如下:

lxc-monitor -n name

LXC 使用 cgroup 檔案系統管理容器。可以通過 LXC 讀和操縱 cgroup 檔案系統的一些部分。要管理每個容器對 cpu 的使用,則可以通過讀取和調整容器的cpu.shares來進行:

代碼如下:

lxc-cgroup -n name cpu.shares
lxc-cgroup -n name cpu.shares howmany

暫停和恢複
[/code]lxc-freeze -n name
lxc-unfreeze -n name[/code]

停止
停止一個容器將導致該容器中啟動的所有進程全體死亡,並且清理容器:

代碼如下:

lxc-stop -n name

銷毀
銷毀容器是指刪除通過 lxc-create 步驟與名稱關聯的設定檔和中繼資料:

代碼如下:

lxc-destroy -n name

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.