Container系列(2)-Linux Container (LXC)初體驗(yàn)

翻譯整理:土豆絲

轉(zhuǎn)載說明出處,謝謝。

Container運(yùn)行在虛擬機(jī)上和在裸機(jī)OS上運(yùn)行是一樣的夫椭。Container托管在虛擬實(shí)例上幾乎沒有開銷刽漂。在2008年第一次引入container技術(shù)的時候绘面,Linux 采用了之前Solaris Container和FreeBSD jails大部分的功能瓤漏。LXC使用自己的進(jìn)程和網(wǎng)絡(luò)空間創(chuàng)建了一個虛擬的運(yùn)行環(huán)境,而不是創(chuàng)建了整個虛擬機(jī)堤撵。它使用namespaces來實(shí)現(xiàn)進(jìn)程隔離并且充分利用內(nèi)核的cgroups功能限制,統(tǒng)計(jì)和隔離一個或多個進(jìn)程的CPU羽莺,內(nèi)存实昨,磁盤I/O和網(wǎng)絡(luò)的使用情況⊙喂蹋可以把它想象為一種比chroot高級的用戶空間框架

所以Container到底是什么呢荒给?簡而言之就是container實(shí)現(xiàn)了應(yīng)用程序和操作系統(tǒng)的解耦,在一個或多個隔離的容器中運(yùn)行其他所有內(nèi)容的同時刁卜,給用戶提供了一個干凈的最小的Linux運(yùn)行環(huán)境志电。Container的目的就是啟動一組有限的應(yīng)用程序或服務(wù)(通常是微服務(wù)),并使它們在獨(dú)立的沙盒環(huán)境中運(yùn)行蛔趴。

運(yùn)行在container中和傳統(tǒng)環(huán)境的對比

這種隔離可以阻止運(yùn)行在Container中的進(jìn)程去監(jiān)控或隔離運(yùn)行在另一個Container的進(jìn)程挑辆。所以,這個容器化的服務(wù)不會影響或干擾主機(jī)。能夠?qū)⒎稚⒃诙鄠€物理服務(wù)器上的許多服務(wù)整合為一個的想法是數(shù)據(jù)中心選擇采用該技術(shù)的眾多原因之一鱼蝉。

Container的特性包括

Security:網(wǎng)絡(luò)服務(wù)運(yùn)行在container中洒嗤,可以限制安全漏洞或違法安全規(guī)則造成的傷害。黑客利用應(yīng)用程序的安全漏洞成功入侵魁亦,也僅限于在該Container中采取一系列操作渔隶。

隔離:Container允許在同一個物理機(jī)器上部署一個或多個應(yīng)用程序,即使這些應(yīng)用程序必須在不同的域進(jìn)行操作吉挣,并且每一個應(yīng)用程序都要求獨(dú)占訪問相應(yīng)的資源派撕。比如,運(yùn)行在不同容器的多個應(yīng)用程序可以通過關(guān)聯(lián)到每一個Container的不同的IP地址綁定同一個的物理網(wǎng)卡睬魂。

虛擬化和透明性: Container提供給系統(tǒng)提供一個虛擬的運(yùn)行環(huán)境可以隱藏或限制物理設(shè)別或系統(tǒng)配置的可見性终吼。Container的原則是避免改變應(yīng)用程序的運(yùn)行環(huán)境的同時解決Security或隔離的問題。

使用LXC工具

配置環(huán)境

以下所有的命令我都在ubuntu 18.04 x86 64 上運(yùn)行過氯哮。運(yùn)行這些命令初步體驗(yàn)一下Container.

現(xiàn)在大部分的Linux發(fā)行包际跪,內(nèi)核都支持cgroups。但是很多時候我們依然需要安裝LXC工具喉钢。


安裝LXC工具

在嘗試使用工具前姆打,需要先配置環(huán)境。首先要先檢查在/etc/subgid和/etc/subuid中肠虽,當(dāng)前用戶都有g(shù)id和uid幔戏。


查看uid和gid

如果沒有~/.config/lxc文件,先創(chuàng)建這個文件夾税课。然后把 /etc/lxc/default.conf拷貝到~/.config/lxc/ 目錄下闲延,并重命名為default.conf. 把下面兩行加入到default.conf文件夾下。

lxc.id_map = u 0 100000 65536

lxc.id_map = g 0 100000 65536


創(chuàng)建default.conf文件

結(jié)果如下

添加用戶

把下面這一行加入到/etc/lxc/lxc-usernet文件中韩玩。第一列替換成你自己的用戶名垒玲。Lxc-usernet是 非特權(quán)用戶網(wǎng)絡(luò)管理文件

hongyan veth lxcbr0 10


打開lxc-usernet


添加網(wǎng)絡(luò)驅(qū)動

設(shè)置成功后,reboot或者退出重新登錄找颓,使設(shè)置生效合愈。

使用下面命令檢查veth網(wǎng)絡(luò)驅(qū)動設(shè)置是否成功

$ lsmod|grep veth

如果沒有成功,使用下面的命令

$ sudo modprobe veth


添加veth 網(wǎng)絡(luò)驅(qū)動成功

到這一步結(jié)束之后击狮,就可以使用LXC工具下載佛析,運(yùn)行和管理Linux Container了。

下載Container

接下來彪蓬,下載一個Container并命名為“example-container“寸莫。運(yùn)行下面的命令,會看到很多Linux發(fā)行版本支持的Container.


下載container


支持的Container列表

會提示選擇發(fā)行版本寞焙,發(fā)行商和架構(gòu)储狭,因?yàn)槭窃趚86平臺互婿,所以選擇ubuntu, bionic 和i386


選擇發(fā)行版 本發(fā)行商 架構(gòu)

填寫完成后回車,rootfs就開始下載并配置辽狈。由于安全原因慈参,每個用戶都沒有使用openSSH或用戶賬戶,也沒有提供默認(rèn)的root 密碼刮萌。


下載成功

啟動Container


啟動Container

會提示要求輸入用戶名和密碼


會提示要求輸入用戶名和密碼

保持現(xiàn)在的終端驮配,后面會用到。這里再打開一個新的終端着茸,可以查看Container的運(yùn)行狀況


查看Container的運(yùn)行狀況


查看所有已經(jīng)安裝的Container的狀況


查看所有已經(jīng)安裝的Container的狀況

現(xiàn)在開始解決不能登錄的問題壮锻。使用lxc-attach命令來修改所有相關(guān)的密碼


使用lxc-attach命令來修改所有相關(guān)的密碼

密碼修改成功后,切到第一個打開的終端涮阔,輸入密碼猜绣,Container登錄成功。

登錄Container

查看Container的IP地址

查看Container的IP地址

也可以通過SSH網(wǎng)絡(luò)訪問這個Container敬特,會發(fā)現(xiàn)被拒絕

通過SSH網(wǎng)絡(luò)訪問Container

首先要在Container環(huán)境中安裝OpenSSH server

安裝OpenSSH server

再次嘗試用ssh遠(yuǎn)程連接container掰邢,連接成功

用ssh遠(yuǎn)程連接container

不要再Container 內(nèi)部,新開一個終端伟阔,使用ps命令查看啟動了哪些LXC進(jìn)程


使用ps命令查看啟動了哪些LXC進(jìn)程

停止Container 運(yùn)行


停止Container 運(yùn)行

查看是否真的停止運(yùn)行了


查看Container狀態(tài)

刪除Container

刪除Container
刪除成功

高級配置

使用管理員權(quán)限可以在/var/lib/lxc/example-container目錄下修改container的配置辣之。

Container目錄下包含兩個文件

1.? 配置文件

2.? Container的roofs


Container 內(nèi)容

配置系統(tǒng)啟動的時候自動啟動Container,在配置文件中/var/lib/lxc/example-container/config中增加下面一行

自動啟動

將Container的啟動路徑設(shè)置為本地路徑

將Container的啟動路徑設(shè)置為本地路徑

配置結(jié)束皱炉,查看Container狀態(tài)怀估,檢查是否配置成功

配置成功


參考鏈接:

https://linuxcontainers.org/lxc/manpages/man5/lxc-usernet.5.html

https://www.linuxjournal.com/content/everything-you-need-know-about-linux-containers-part-ii-working-linux-containers-lxc

https://linuxcontainers.org/lxc/getting-started/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市合搅,隨后出現(xiàn)的幾起案子多搀,更是在濱河造成了極大的恐慌,老刑警劉巖历筝,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酗昼,死亡現(xiàn)場離奇詭異廊谓,居然都是意外死亡梳猪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蒸痹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來春弥,“玉大人,你說我怎么就攤上這事叠荠∧渑妫” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵榛鼎,是天一觀的道長逃呼。 經(jīng)常有香客問我鳖孤,道長,這世上最難降的妖魔是什么抡笼? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任苏揣,我火速辦了婚禮,結(jié)果婚禮上推姻,老公的妹妹穿的比我還像新娘平匈。我一直安慰自己,他們只是感情好藏古,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布增炭。 她就那樣靜靜地躺著,像睡著了一般拧晕。 火紅的嫁衣襯著肌膚如雪隙姿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天厂捞,我揣著相機(jī)與錄音孟辑,去河邊找鬼。 笑死蔫敲,一個胖子當(dāng)著我的面吹牛饲嗽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奈嘿,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼貌虾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了裙犹?” 一聲冷哼從身側(cè)響起尽狠,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叶圃,沒想到半個月后袄膏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掺冠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年沉馆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片德崭。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡斥黑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出眉厨,到底是詐尸還是另有隱情锌奴,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布憾股,位于F島的核電站鹿蜀,受9級特大地震影響箕慧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茴恰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一销钝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧琐簇,春花似錦蒸健、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丈秩,卻和暖如春盯捌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蘑秽。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工饺著, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肠牲。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓幼衰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缀雳。 傳聞我的和親對象是個殘疾皇子渡嚣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354