http://www.arthurtoday.com/2012/10/ubun ... iners.html
建立和設定 LXC Container
於 星期日, 10月 28, 2012
標籤: 安裝 設定 虛擬機器 Linux lxc Ubuntu
分享:
使用 lxc 的好處之一,就是可以把虛擬機器再拿來切一切,分出更多的小小的執行環境來同時跑更多的 Linux 作業系統,這在需要模擬很多台電腦時,就會很方便,雖然大部份的文件都是提到用 KVM 來搭配 lxc 使用的,不過,阿舍是在 VirtualBox 上的 Ubuntu 虛擬機器來安裝和測試的,用來,還沒什麼問題,這大概因為 lxc 已被包在 Linux 核心裡,所以,一般的情況,只要 Linux 跑的起來,lxc 就應該可以用吧 !
Credit Diego Elio “Flameeyes” Pettenò
lxc 是透過範本來建立虛擬機器 (有人說應該是稱為虛擬執行環境,阿舍瞭解,不過,阿舍習慣上,還是都會用虛擬機器再形容的哩 !),而 lxc 內建就有幾個 Linux 發行版本的範本檔可用,以 Ubuntu 為例,lxc 內建的範本檔是放在 /usr/share/lxc/templates 資料夾裡的,所以,當要建立 Ubuntu 的 虛擬機器時,就可以用下面的指令來建立。
lxc-create -n 虛擬機器名稱 -t 範本檔名(不需要加 lxc)
以阿舍要建立一個名為 ubuntu-lxc-vm 的虛擬機器為例,操作指令如下,產生出來的虛擬機器會被放在 /var/lib/lxc 資料夾下,以下面的例子來說,就會產生一個 /var/lib/lxc/ubuntu-lxc-vm 的資料夾來放這個虛擬機器的相關檔案。( 如果之前還沒安裝過 lxc 套件,請用 apt-get install lxc 安裝即可 )
sudo lxc-create -n ubuntu-lxc-vm -t ubuntu
執行上面的指令後,lxc 就會自動去下載並安裝 Ubuntu 所需的檔案,這個過程要等一段時間,要看機器效能和網路頻寬而定,阿舍是放著就去看電視了,過了好一會才回來看,結果,就還在跑哩!OMG ! (不過,因為下載來的檔案會放到 /var/cache/lxc 資料夾裡,所以,之後就不用那麼久了哩 ! ) 等建立完成後,就可以用下面的指令來啟動虛擬機器,然後,就掛在那邊了,因為不知道帳號和密碼哩 !
sudo lxc-start -n ubuntu-lxc-vm
後來,查了一下才知,預設的帳號和密碼都是「ubuntu」,不過,阿舍的還有一個問題沒解決,就是,阿舍是用 Ubuntu Server 的虛擬機器安裝的,沒有安裝 X Window 來用,就只有一個 Terminal 可用 (註:阿舍後來才知,在Guest 的 Ctrl+Alt F2 要改用 Hot Key+F2 哩 !),因此,就沒辦同時操作多個虛擬器哩 ! 所以,就又去安裝了 screen 來用,這樣,就不用開很多個 Termial 來用,而且,操作上會比較方便的,有關 screen 的操作,請參考這裡。
啟動虛擬機器後,接下來,阿舍的疑問是,不是說 lxc 可以設定每個虛擬機器可以使用的資源使用量嗎 ? 那要去那裡設定哩 ? 阿舍查了一下,原來,是要透過 lxc-cgroup 指令來控制,而 lxc-cgroup 的可用參數,可分別查詢 /sys/fs/cgroup/cpu 和 /sys/fs/cgroup/memory 這二個資料夾的檔案名稱,以阿舍要設定 ubuntu-lxc-vm 這個虛擬機器的記憶體用量為 256MB 為例,就可用下面的指令來設定,不過,執行的時候,虛擬機器要是啟動中才行。
sudo lxc-cgroup -n ubuntu-lxc-vm memroy.limit_in_bytes 256M
除了上述用指令的方式來設定之外,也可以搭配設定檔來使用,設定方式就是在參數前面要多加 「lxc.cgroup.」,以上面的指令來說,在設定檔就要設定如下,而預設的設定檔是 /var/lib/lxc/虛擬機器名稱/config,以阿舍的 ubuntu-lxc-vm 為例,設定檔就是 /var/lib/lxc/ubuntu-lxc-vm/config 這個檔案。
lxc.cgroup.memory.limit_in_bytes = 256M
另外,再提一下 CPU 的設定部份,CPU 的設定分成二種方式,一種是可佔用時間的週期,另一種則是在多 CPU 的環境下,指定虛擬機器要使用那一個 CPU,第一種的指令如下,後面的數字最高為 1024,不帶數字參數就會顯示設定值。
lxc-cgroup -n ubuntu-lxc-vm cpu.shares 512
第二種方式的操作指令如下(以使用第 0、4顆 CPU 為例),同樣,未帶入數字就是用來查詢的,而用在設定檔的話,就是「lxc.cgroup.cpuset.cpus = 0,3」。
lxc-cgroup -n ubuntu-lxc-vm cpuset.cpus 0,3
再來,是有關網卡的部份,雖然,大部份都是會用 NAT 的方式來連線,不過,在測試東西的時候,大都會需要用同一個網段來連線,因此,就會需要將網卡改成橋接的方式來連到 DHCP Server 取 IP 位址,而這個部份的設定是要調整 Host 的 /etc/network/interfaces 檔案,請將下面這幾行加到 interfaces 檔裡 ( 以 DHCP 為例) 。
auto br0
iface br0 inet dhcp
bridge_ports eth0
上面的這幾行加好後,請執行下面指令來啟用 br0 。
sudo ifup br0
然後,要修改設定檔 (以阿舍的 ubuntu-lxc-vm 為例,設定檔就是 /var/lib/lxc/ubuntu-lxc-vm/config 這個檔案 ),請將下面這一行的「lxcbr0」改成「br0」之後儲存設定,這樣,再啟動虛擬機器時,所取到的 IP 位址就是由 DHCP Server 發的,而不是 10.0.3.X 這一組哩 !
lxc.network.link = lxcbr0
最後,再說一下,如果是要停止虛擬機器的話,請用下面這行指令。
sudo lxc-shutdown -n 虛擬機器名稱
或
sudo lxc-stop -n 虛擬機器名稱
而如果是要複製虛擬機器的話,請用下面這行指令。
sudo lxc-clone -o 來源虛擬機器名稱 -n 新虛擬機器名稱
順便看看 :
以下載範本建立 LXC Container
LXC 建立與使用 Unprivileged Container
Ubuntu 和 LXC Container 互相存取檔案
LXC Container 搬移和複製 Container 到其它電腦
LXC Container 設定開機自動啟動
LXC 建立拋棄式 Container (Ephemeral Containers)
LXC Container 變更名稱 ( lxc-clone)
LXC Conatiner 設定 Port Forwarding 提供外部連入
參考資料:
https://help.ubuntu.com/community/LXC
https://help.ubuntu.com/12.10/serverguide/lxc.html
http://www.stgraber.org/2012/05/04/lxc- ... 12-04-lts/
http://linuxkvm.blogspot.tw/2012/10/lin ... linux.html
http://guildwar23.blogspot.tw/2011/05/l ... s-lxc.html
http://s3hh.wordpress.com/2011/05/17/lx ... d-network/
http://www.stgraber.org/2012/03/04/boot ... container/
http://blog.foaa.de/2010/05/lxc-on-debi ... containers
Read more: http://www.arthurtoday.com/2012/10/ubun ... z4v170zhtC
LXC
前往
- Software
- ↳ CodeCharge Studio
- ↳ CodeCharge
- ↳ DemoCharge
- ↳ SuperPDF
- ↳ 551einv
- ↳ E3進銷存
- 程式語言
- ↳ PHP
- ↳ CodeLobster PHP Edition
- ↳ Yii
- ↳ CodeIgniter
- ↳ Phalcon
- ↳ Symfony
- ↳ FuelPHP
- ↳ Zend Framework 2
- ↳ laravel
- ↳ WordPress
- ↳ ASP.NET/C#
- ↳ ASP/VBScript
- ↳ JSP
- ↳ Java Servlets
- ↳ ColdFusion
- ↳ Perl
- ↳ Java Script
- ↳ jQuery
- ↳ HTML + CSS
- ↳ jQuery
- ↳ nodejs
- ↳ VB6
- ↳ Git
- ↳ App Inventor 2
- ↳ bash
- ↳ C++/ VC/ OpenCV
- ↳ OpenCV
- ↳ go
- ↳ cordova
- ↳ python
- ↳ Xamarin
- ↳ Assembly
- 資料庫
- ↳ MySQL
- ↳ PostgreSQL
- ↳ ORACLE
- ↳ Access
- ↳ SQL Server
- ↳ SQLite
- ↳ MariaDB
- ↳ Mongodb
- 作業系統
- ↳ Linux
- ↳ Ubuntu
- ↳ CentOS
- ↳ Mint
- ↳ Mandriva
- ↳ Debian
- ↳ Red Hat Enterprise Linux
- ↳ Oracle Linux
- ↳ Fedora
- ↳ Kali Linux
- ↳ OpenSUSE
- ↳ Elementary OS
- ↳ Microsoft
- ↳ Server 2008 R2
- ↳ Server 2012 R2
- ↳ Server 2012
- ↳ 8
- ↳ 10
- ↳ System Center 2016
- ↳ NOVELL
- ↳ FreeBSD
- ↳ VMware
- ↳ VirtualBox
- ↳ Mac OS X
- ↳ Solaris
- ↳ iOS
- ↳ Android
- ↳ Cloud
- ↳ OpenStack
- ↳ Docker
- ↳ Proxmox VE
- ↳ CloudReady
- ↳ chrome
- 網頁伺服器
- ↳ apache
- ↳ tomcat
- ↳ nginx
- ↳ IIS
- ↳ JBoss
- ↳ weblogic
- ↳ WebHosting
- 硬體
- ↳ 硬體及週邊
- ↳ RouterOS
- ↳ LEGO NXT
- ↳ Arduino
- ↳ MSP430
- ↳ Raspberry Pi
- ↳ OpenERP
- ↳ Storage
- ↳ Server
- ↳ Brocade
- ↳ MODELS
- ↳ FortiGate
- 軟體
- ↳ sublime
- ↳ LibreNMS