Credit Diego Elio “Flameeyes” Pettenò |
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-in-ubuntu-12-04-lts/
http://linuxkvm.blogspot.tw/2012/10/linux-container-linux.html
http://guildwar23.blogspot.tw/2011/05/linux-containers-lxc.html
http://s3hh.wordpress.com/2011/05/17/lxc-with-bridged-network/
http://www.stgraber.org/2012/03/04/booting-an-ubuntu-12-04-virtual-machine-in-an-lxc-container/
http://blog.foaa.de/2010/05/lxc-on-debian-squeeze/#how-to-setup-a-private-network-between-containers
推薦閱讀
- 問題沒解決嗎? 更多的 Ubuntu 教學在 這裡
- Prompt Injection: 提示詞注入安全漏洞
- 二款 Mac 無痛安裝的 Stable Diffusion 軟體
- 用 AI 寫部落格文章好不好 ?
- 沒有免費的 Midjourney 和 Colab 又不想花錢怎麼辦 ?
- 不學 Prompt 技巧也能善用 ChatGPT 的簡單方法
- 企業 AI 應用:不只是聊天機器人
- Automatic 比 Automatic1111 更好用 ? 都是 Stable Diffusion WebUI
- Stable Diffusion 的 /describe 圖生文功能
- AI 畫出讓人可怖的美圖 !
有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁
沒有留言 :
張貼留言
歡迎留言提問和討論 .... 😁