Difference between runC,LXC and LXD

I would like to run a system container on an embedded target. Two important factors of selecting the container runtime are:-
a) How quickly the system container can be started?
b) Minimum Runtime resource usage.

I have been trying to understand the suitability of runC and LXC to achieve this. Can some one please give an opinion, which is the appropriate container runtime between these two?

Can LXD be used instead of LXC and still meet the above two criteria?


For embedded, LXC is your best bet, it’s written in C and is very very lightweight and has been used in some embedded environments before (dd-wrt/openwrt) and on Android devices.

Thanks Stephane, for your opinion. Can you please give your opinion about runC and why do you think it would not be suitable as compared to LXC?


RunC is also written in Go, despite its name which may imply otherwise.

So if you want a lightweight container library, C is the go to and that leaves you with LXC.

Thanks for the clarification.