如何在Ubuntu上建立及管理LXC容器
雖然早在十多年前就引入了容器這個概念,用來安全地管理共享式主機託管環境(比如FreeBSD監獄),但LXC或Docker之類的Linux只是最近因日益需要為雲端計算部署應用程式而進入主流。雖然這陣子Docker備受媒體的關注,並且得到了各大雲服務提供商(比如亞馬遜AWS和微軟Azure)以及發行版提供商(比如紅帽和Ubuntu)的大力支援,但LXC實際上卻是針對Linux平臺開發的早期容器技術之一。
如果你是普普通通的Linux使用者,Docker/LXC可以帶來什麼樣的好處呢?嗯,容器實際上是一種在諸發行版之間幾乎即時切換的一種好方法。假設你當前的桌面系統是Debian,你需要Debian的穩定性。與此同時,你又想玩最新的Ubuntu遊戲。然後,用不著很麻煩地通過雙啟動進入到Ubuntu分割槽,或者啟動佔用大量資源的Ubuntu虛擬機器,只要立即啟用一個Ubuntu容器即可,一切都搞定了。
即便沒有Docker的種種好處,我喜歡LXC容器的地方在於,LXC可以由libvirt介面來管理,Docker卻不是這樣。如果你之前一直使用基於libvirt的管理工具(比如virt-manager或virsh),就可以使用同樣那些工具來管理LXC容器。
我在本教程中著重介紹標準LXC容器工具的命令列用法,並且演示如何在Ubuntu上從命令列建立及管理LXC容器。
將LXC安裝到Ubuntu上
想在Ubuntu上使用LXC,就要安裝LXC使用者空間工具,如下所示。
$ sudo apt-get install lxc
安裝完畢之後,執行lxc-checkconifg工具,檢查當前Linux核心支援LXC的情況。要是一切都已被啟用,核心對LXC的支援已準備就緒。
$ lxc-checkconfig
安裝LXC工具後,你會發現,LXC的預設網橋介面(lxcbr0)已自動建立(已在/etc/lxc/default.conf中加以配置)。
建立LXC容器後,視窗的介面就會自動連線到該網橋,那樣容器就能與外界進行聯絡了。
建立LXC容器
為了能夠建立某個特定目標環境(比如Debian Wheezy 64位)的LXC容器,你就需要一個相應的LXC模板。幸運的是,Ubuntu上的LXC使用者空間工具隨帶一系列預先準備好的LXC模板。你可以在/usr/share/lxc/templates目錄下找到可用的LXC模板。
$ ls /usr/share/lxc/templates
LXC模板其實就是一段指令碼而已,用來為某個特定的Linux環境建立容器。你在建立LXC容器時,需要用到這其中一個模板。
比如說,為了建立Ubuntu容器,使用下面這個命令列:
$ sudo lxc-create -n -t ubuntu
預設情況下,它會建立與本地主機同一版本號和同一架構的最小Ubuntu安裝系統,這種情況下是Saucy Salamander(13.10)64位。
如果你希望,可以建立任何一種版本的Ubuntu容器,只要傳遞release引數。比如說,想建立Ubuntu 14.10容器:
$ sudo lxc-create -n -t ubuntu -- --release utopic
它會下載並驗證目標容器環境需要的所有程式包。整個過程可能需要幾分鐘或更長時間,具體取決於容器型別。所以請耐心點。
經過一系列的程式包下載和驗證後,LXC容器映像最終建立完畢,你會看到預設的登入資料可供使用。容器儲存在/var/lib/lxc/<container-name>,根檔案系統則位於/var/lib/lxc/<container-name>/rootfs。
LXC建立過程中下載的所有程式包則快取在/var/cache/lxc裡面,那樣使用同樣的LXC模板建立額外的容器就不用花時間了。
現在不妨看一下主機上的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),如下所示。
$ brctl show lxcbr0
管理LXC容器
既然我們已知道了如何建立及啟動LXC容器,現在不妨看看我們可以如何處理執行中的容器。
首先,我們想要訪問容器的控制檯。為此,鍵入這個命令:
$ sudo lxc-console -n
鍵入<Ctrl+a q>組合鍵,退出控制檯。
想停止和銷燬容器:
$ 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
相關文章
- 教你在 Ubuntu 上使用 LXC 容器Ubuntu
- 容器技術之LXC WEB管理工具LXC WEB PanelWeb
- 容器技術之LXC
- 如何在 Ubuntu 上用 Go For It 管理您的待辦清單UbuntuGo
- 如何在 Ubuntu 上安裝 MongoDBUbuntuMongoDB
- 如何在 Ubuntu 上安裝 OctoberCMSUbuntu
- 如何在 Ubuntu 上搭建網橋Ubuntu
- 如何在 Ubuntu 上配置網橋Ubuntu
- 如何在 Ubuntu中建立可引導 USB?Ubuntu
- 如何在 Ubuntu 上安裝 VirtualBoxUbuntu
- 如何在ubuntu上設定清華源Ubuntu
- [Docker]在Ubuntu容器中建立sudo使用者DockerUbuntu
- 如何在 Windows 上執行 Linux 容器WindowsLinux
- 如何在Ubuntu 16.04中建立GIF動圖Ubuntu
- 如何在 Ubuntu 上安裝 Python 3.8UbuntuPython
- 如何在 Ubuntu 上設定時間同步Ubuntu
- 如何在 Ubuntu 18.04 上更新韌體Ubuntu
- 如何在 Ubuntu 上使用 Grafana 監控 DockerUbuntuGrafanaDocker
- 如何在 Ubuntu 上比較 PDF 檔案Ubuntu
- 如何在 Ubuntu 上安裝 FireFox 15UbuntuFirefox
- 如何在Ubuntu24.04上安裝ELKUbuntu
- 如何在Ubuntu上使用HMCL遊玩MinecraftUbuntuRaft
- 如何在Ubuntu上使用FreeFileSync同步檔案Ubuntu
- 如何在 Ubuntu 上使用 ZFS 檔案系統Ubuntu
- 在 Ubuntu 中用 Docker 管理 Linux Container 容器UbuntuDockerLinuxAI
- 如何在CLI上管理密碼密碼
- 如何在 Ubuntu 中管理和使用邏輯卷管理 LVMUbuntuLVM
- Image server for Incus and LXCServer
- 在Ubuntu上建立並測試GRE tunnelUbuntu
- 如何在Ubuntu 16.10上安裝ResourceSpace程式Ubuntu
- 如何在 Ubuntu 上安裝和使用 R 語言Ubuntu
- 如何在 Ubuntu 上安裝 EMQX MQTT 伺服器UbuntuMQQT伺服器
- 如何在 Ubuntu 22.04 上安裝 Python Pip?UbuntuPython
- 如何在Ubuntu/CentOS上安裝Linux核心4.0UbuntuCentOSLinux
- 如何在ubuntu[linux] 上用docker安裝SqlserverUbuntuLinuxDockerSQLServer
- 如何在 Ubuntu 中管理開機啟動應用Ubuntu
- ASM之磁碟建立及管理ASM
- 如何在Github上建立一個新倉庫Github