Ubuntu上建立及管理LXC容器的方法

2021-06-27 05:33:34 字數 3430 閱讀 2134

雖然早在十多年前就引入了容器這個概念,用來安全地管理共享式主機託管環境(比如freebsd監獄),但lxc或docker之類的linux只是最近因日益需要為雲計算部署應用程式而進入主流。雖然這陣子docker備受**的關注,並且得到了各大雲服務提供商(比如亞馬遜aws和微軟azure)以及發行版提供商(比如紅帽和ubuntu)的大力支援,但lxc實際上卻是針對linux平台開發的早期容器技術之一。

如果你是普普通通的linux使用者,docker/lxc可以帶來什麼樣的好處呢?嗯,容器實際上是一種在諸發行版之間幾乎即時切換的一種好方法。假設你當前的桌面系統是debian,你需要debian的穩定性。與此同時,你又想玩最新的ubuntu遊戲。然後,用不著很麻煩地通過雙啟動進入到ubuntu分割槽,或者啟動占用大量資源的ubuntu虛擬機器,只要立即啟用乙個ubuntu容器即可,一切都搞定了。

我在本教程中著重介紹標準lxc容器工具的命令列用法,並且演示如何在ubuntu上從命令列建立及管理lxc容器。

將lxc安裝到ubuntu上

想在ubuntu上使用lxc,就要安裝lxc使用者空間工具,如下所示。

$ sudo apt-get install lxc

安裝完畢之後,執行lxc-checkconifg工具,檢查當前linux核心支援lxc的情況。要是一切都已被啟用,核心對lxc的支援已準備就緒。

安裝lxc工具後,你會發現,lxc的預設網橋介面(lxcbr0)已自動建立(已在/etc/lxc/default.conf中加以配置)。

建立lxc容器後,視窗的介面就會自動連線到該網橋,那樣容器就能與外界進行聯絡了。

建立lxc容器

為了能夠建立某個特定目標環境(比如debian wheezy 64位)的lxc容器,你就需要乙個相應的lxc模板。幸運的是,ubuntu上的lxc使用者空間工具隨帶一系列預先準備好的lxc模板。你可以在/usr/share/lxc/templates目錄下找到可用的lxc模板。

lxc模板其實就是一段指令碼而已,用來為某個特定的linux環境建立容器。你在建立lxc容器時,需要用到這其中乙個模板。

比如說,為了建立ubuntu容器,使用下面這個命令列:

預設情況下,它會建立與本地主機同一版本號和同一架構的最小ubuntu安裝系統,這種情況下是saucy salamander(13.10)64位。

如果你希望,可以建立任何一種版本的ubuntu容器,只要傳遞release引數。比如說,想建立ubuntu 14.10容器:

現在不妨看一下主機上的lxc容器列表:

$ sudo lxc-ls –fancy

name state ipv4 ipv6 autostart

test-lxc stopped - - no

想啟動乙個容器,請使用下面這個命令。「-d」選項將容器作為守護程式來啟動。要是沒有這個選項,你在啟動容器後,會直接被連線到控制台。

$ sudo lxc-start -n -d

啟動容器後,不妨再次檢查容器狀態:

$ sudo lxc-ls –fancy

name state ipv4 ipv6 autostart

lxc running 10.0.3.55 - no

你會看到,容器處於「running」(執行)狀態,已被賦予了乙個ip位址。

你還可以證實,容器的介面(比如vethj06sfl)自動連線到lxc的內部網橋(lxcbr0),如下所示。

管理lxc容器

既然我們已知道了如何建立及啟動lxc容器,現在不妨看看我們可以如何處理執行中的容器。

首先,我們想要訪問容器的控制台。為此,鍵入這個命令:

鍵入組合鍵,退出控制台。

想停止和銷毀容器:

$ sudo lxc-stop -n $ sudo lxc-destroy -n

想把現有容器轉殖成另乙個容器,使用這些命令:

$ sudo lxc-stop -n $ sudo lxc-clone -o -n

故障排查

如果你遇到了lxc方面的錯誤,下面是故障排查方面的幾個要點。

1. 你無法建立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(libcg管理器)。想解決這個問題,你就需要更新libcg管理器。

$ sudo apt-get install libcgmanager0

複製**

$ 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
複製**

$ 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
複製**

教你在 Ubuntu 上使用 LXC 容器

使用 容器 來保證主機環境的安全性,這個概念早在十年前就已經存在 例如 freebsd 的 jail 虛擬化技術 但是直到最近,隨著部署雲架構需求越來越多,像 lxc 和 docker 這種 linux 下的容器才成為被關注的焦點。當然,由於主流廠商 雲服務商如亞馬遜主推 aws,微軟主推 azur...

ubuntu上OpenCv安裝及範例

talk is cheap.show you the code bin bash author cheng sudo apt get update sudo apt get upgrade sudo apt get install build essential cmake git pkg conf...

Ubuntu上安裝PyCharm及設定

目錄 最簡單的方法 希望馬上安裝 開始使用 設定字型 設定 回退到view的上一位置 適用於ubuntu16.04及以上版本 使用如下命令 sudo snap install pycharm professional pycharm community classic 不過該法耗時較長,建議凌晨三四...