問題一:執行lxc-create時,報錯configuration path '/usr/local/var/lib/lxc' not found,或者lxc-ls無效:
解決:mkdir –p /usr/local/var/lib/lxc
問題二:lxc-execute: No such file or directory -failed to open /proc/mounts
原因簡析:掛載cgroup文件系統時,把/proc文件系統玩壞了。不是每次都出現,個人筆記本和實驗節點都未出現此問題,但是上線節點出現了此問題。
解決: sudo mount --make-rprivate /
問題三:lxc啓動後內部進程PID與宿主機相獨立
解決:使用lxc-start命令啓動
問題四:lxc-start命令不能以daemon形式啓動進程
啓動腳本中最後一個進程不能以daemon形式啓動。例如
# loop1.sh my_loop & my_loop & my_loop & |
不可以使用lxc-start啓動
# loop2.sh my_loop & my_loop & my_loop |
可以使用lxc-start啓動
雖然腳本內部對daemon(&)形式有限制,但是啓動lxc時,可以使用daemon形式,例如
lxc-start -n my_lxc sh loop2.sh &
問題五:使用lxc-execute後,報錯netstat: no support for `AF UNIX` on this system,/proc文件系統出現異常。
解決:切換到root用戶,系統會進行提示,根據提示,進行如下操作:mount -t proc none /proc,重新掛載/proc文件系統
問題六:lxc與內部進程的耦合關係
基本屬於緊耦合,關閉lxc(lxc-stop)後,內部進程被殺掉;關閉lxc內所有進程後,lxc也自動被關閉。
解決:使用lxc-attach,不過好像需要打內核補丁。本人未實際操作。
問題七:使用普通用戶啓動lxc
解決:lxc自帶命令lxc-setuid。root執行lxc-setuid後,普通用戶即可使用lxc-start lxc-stop等命令。
問題八:lxc-stop暴力關閉lxc。應用方希望關閉lxc時,應用程序可以不要暴力關閉,可以收到signum(如15)。這樣應用方可以先進行結果回收,然後再退出。
解決:使用lxc-kill命令,如使用命令lxc-kill -n lxc1 15,相當於kill -15關閉應用進程。
問題九:使用lxc啓動Java進程後,java調試工具(如jps/jstat)無法正常使用。
解決:修改代碼clone_newpid,參見另一篇專門博客《LXC Java調試命令無效與共享PID Namespace》。