使用「容器」來保證主機環境的安全性,這個概念早在十年前就已經存在(例如 freebsd 的 jail 虛擬化技術),但是直到最近,隨著部署雲架構需求越來越多,像 lxc 和 docker 這種 linux 下的容器才成為被關注的焦點。當然,由於主流廠商(雲服務商如亞馬遜主推 aws,微軟主推 azure;發行版如紅帽、ubuntu等)組成的強大靠山,docker 已經被放在**的聚光燈下面,其實,docker 裡面所謂的「容器」技術是由 lxc 提供的。
你只是乙個普通的 linux 使用者,那 docker/lxc 能為你帶來什麼好處呢?容器可以將你的應用在不同的 linux 發行版之間遷移。想像一下這個場景:你正在用的發行版是 debian,你喜歡它的穩定性,同時你又想玩一款最新的 ubuntu 遊戲,你不需要在電腦上裝雙系統然後重啟進入 ubuntu,也不需要在 debian 上跑乙個耗資源的 ubuntu 虛擬機器,你只需要簡單地生成乙個 ubuntu 容器就夠了。
在這篇教程中,我只介紹標準 lxc 容器管理工具的命令列操作,來教你如何在 ubuntu 下建立和管理 lxc 容器。
使用下面的命令安裝 lxc 在使用者態的工具:
$sudo
apt-get
install lxc
然後檢查當前核心是否支援 lxc。如果所有結果都是「enable」,說明核心支援:
$ lxc-checkconfig
安裝完 lxc 工具後,就能看到 lxc 自動建立了一塊橋接網絡卡(lxcbr0,可以在 /etc/lxc/default.conf 中設定)。
當你建立了 lxc 容器後,它的網口會自動鏈結到這個橋接網絡卡上,然後這個容器就能和外部世界通訊了。
為了在指定環境下(比如 debian wheezy 64位)建立 lxc 容器,你需要乙個相應的 lxc 模板。幸運的是 lxc 提供的工具整合了一整套現成的 lxc 模板,你可以在 /usr/share/lxc/templates 目錄下找到它們。
$ ls/usr/
share
/lxc
/templates
乙個 lxc 模板實質上就是乙個指令碼,用於建立指定環境下的容器。當你建立 lxc 容器時,你需要用到它們。
比如你要新建 ubuntu 容器,使用下面的命令即可:
$sudo
lxc-
create -n
<
container
-name
>
-t ubuntu
預設情況下,這個命令會建立乙個最小的 ubuntu 環境,版本號與你的宿主機一致,我這邊是「活潑的蠑螈」(版本號是13.10),64位。
當然你也可以建立任何你喜歡的版本,只要在命令裡面加乙個版本引數即可。舉個例子,建立 ubuntu 14.10 的容器:
$sudo
lxc-
create -n
<
container
-name
>
-t ubuntu
----
release utopic
用下面的命令看看主機上所有的 lxc 容器:
$sudo
lxc-
ls--
fancy
name state ipv4 ipv6 autostart------------------------------------
test
-lxc stopped --
no 使用下面的命令啟動容器。引數「-d」將容器作為後台程序開啟。如果沒有指定這個引數,你可以在控制台介面上直接把容器的執行程式關閉(lctt譯註:ctrl+c組合鍵)。
$sudo
lxc-
start -n
<
container
-name
>-d
開啟容器後,看看狀態:
$sudo
lxc-
ls--
fancy
name state ipv4 ipv6 autostart-----------------------------------------
lxc running
10.0
.3.55
-no
容器狀態是「執行中」,容器 ip 是10.0.3.55。
你也可以看到容器的網路介面(比如我這裡是 vethj06sfl)自動與 lxc 內部網橋(lxcbr0)連上了:
$ brctl show lxcbr0我們已經學習了怎麼建立和啟動 lxc 容器,現在來看看怎麼玩乙個正在執行著的容器。
第一步:開啟容器控制台:
$sudo
lxc-
console -n
<
container
-name
>
使用「crtl+a q」組合鍵退出控制台。
停止、刪除容器:
$sudo
lxc-
stop -n
<
container
-name
>
$ sudo
lxc-
destroy -n
<
container
-name
>
複製容器,用下面的命令:
$sudo
lxc-
stop -n
<
container
-name
>
$ sudo
lxc-
clone-o
<
container
-name
>-n
<
new-
container
-name
>
這個小節主要介紹你們在使用 lxc 過程中碰到過的問題。
建立 lxc 容器時遇到下面的錯誤:
$ sudo lxc-create -n test-lxc -t ubuntu
lxc-create
:symbol lookup error
:/usr/
lib/
x86_64
-linux
-gnu
/liblxc.so
.1:undefined
symbol
:cgmanager_get_pid_cgroup_abs_sync
錯誤的原因是你執行了最新的 lxc,但是它所依賴的 libcgmanager 版本較老,兩者不相容。公升級下 libcmanager 即可解決問題:
$sudo
apt-get
install libcgmanager0
大神教你 在Ubuntu上安裝MongoDB資料庫
mongodb是在現代web應用程式中常用的文件資料庫。本教程應該幫助您設定虛擬專用伺服器,以用作生產應用程式環境的專用mongodb伺服器。第1步 建立droplet 這乙個很容易。一旦你完成,繼續和 ssh 注 建議您配置 ssh 和 sudo 像這樣 第2步 建立安裝指令碼 mongodb安裝...
Ubuntu上建立及管理LXC容器的方法
雖然早在十多年前就引入了容器這個概念,用來安全地管理共享式主機託管環境 比如freebsd監獄 但lxc或docker之類的linux只是最近因日益需要為雲計算部署應用程式而進入主流。雖然這陣子docker備受 的關注,並且得到了各大雲服務提供商 比如亞馬遜aws和微軟azure 以及發行版提供商 ...
《APUE》在Ubuntu上使用apue h
linux版本 ubuntu14.04 在開始學習apue的過程中很多時候都遇到apue.h這個標頭檔案,該書的每乙個程式都會包含這個標頭檔案,它包含許多標準系統標頭檔案,定義了許多常量和常用的函式原型,在附錄b中會看見該標頭檔案的內容。以下為使用apue.h的步驟 二 安裝libbsd 執行apt...