2015-03-24

LXC Container 設定開機自動啟動

Container 可以設定為自動啟動 (AUTOSTART),就是在系統開機後,自動的啟動起來,這樣,阿舍設定在 Container 裡的服務就可以跟著自動啟動了,不過,因為權限限制的關係,這個開機自動啟動的功能在 Unprivileged Container 上是沒有作用的哩 !




要把 Container 設定為自動啟動的方式很簡單,就只要在那個 Container 的設定檔加入下面這三行就可以了,以阿舍要讓 u1404b 這個 Container 能夠在 Ubuntu 啟動後自動跟著啟動的話,就要打開 /var/lib/lxc/u1404b/config 這個檔,然後,加入下面這三行,這樣,只要開機就會自動啟動這個 Container 囉 !

lxc.start.auto = 1 # 1 為自動啟動,0 則否,預設為 0
lxc.start.delay = 5 # 等待幾秒後再啟動下一個 Container
lxc.start.order = 50 # 數字越大越先啟動

如果有第二或第三個 Container 也要在開機自動啟動的話,就一樣在那些 Container 裡加入上面這三行就可以了,不過,LXC Container 的自動啟動(AUTOSTART) 功能不只如此而已,還可以用來啟動一群 Container,透過 Container 的群組功能和 lxc-autostart 指令就可以自動依序啟動一整群的 Container 電腦哩 !

有指定群組的 COntainer 不會在開機自動啟動


例如,阿舍有 u1404a、u1404b、u1404c、u1404d 等四個交互運作的 Container 們,阿舍每次都要依序來啟動它們,有點麻煩,所以,就分別在它們的 config 檔裡加入下面這幾行,讓這個 Container 變成同在一個叫做 arthurtoday 的群組。

lxc.start.auto = 1
lxc.start.delay = 5
lxc.start.order = 50 # 每個 Container 依啟動順序變更數字大小
lxc.group = arthurtoday

阿舍的四個 Container 都加入上面這幾行之後,阿舍就可以利用下面這幾個 lxc-autostart 指令來啟動、重開和關閉 arthurtoday 群組的所有 Container 哩 !

$ sudo lxc-autostart -g arthurtoday # 啟動
$ sudo lxc-autostart -r -g arthurtoday # 重開
$ sudo lxc-autostart -s -g arthurtoday # 重開

不過,這裡要特別注意的是,如果是要作為系統開機就啟動的 Container 的話,就不可以再用 lxc.group 來分群組了,因為開機啟動的功能只會對 config 設定檔裡有設定 lxc.start.auto = 1 且未指定 lxc.group 項目的 Container 有效,因此,如果要讓 Container 可以在系統開機時自動跟著啟動的話,就千萬不要指定群組,不然,就無法在開機時啟動了哩 ! ... 這個問題阿人弄好久,後再,再仔細看 Man Page 的說明才搞清楚的啊 ~~~

還有,所有設定 lxc.start.auto = 1 且未指定群組的 Container 都會被放到一個叫做 onboot 的特殊群組,因此,如果想要用 lxc-autostart 指令來管理開機自動啟動的 Container 的話,就可以透過 onboot 這個群組來操作哩 !

$ sudo lxc-autostart -s -g onboot # 關閉所有開機啟動的 Container 們


推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁