教你在 Ubuntu 上使用 LXC 容器

2021-09-23 16:47:58 字數 3620 閱讀 1108

使用「容器」來保證主機環境的安全性,這個概念早在十年前就已經存在(例如 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...