Forum: 
Tags: 

Smallest Debian GNU/Linux appliance possible

c.monty's picture

Hello!

The current base appliance "TurnKey Core - Debian GNU/Linux with Batteries Included" has a size of >250MB.

I'm searching for a much smaller base appliance because I think a full Debian base is not needed for all applications.

For docker there's a very small (~ 50MB) Debian container available provided by the guyz from "Bitnami" called: minideb

Do you see any option to migrate the container that can be build locally using the Makefile to LXC?

 

THX

Jeremy Davis's picture

The size you are quoting is our VM build (254MB), the ISO is somewhat smaller at 211MB, but the installed size should be the same. The LXC build is quite a bit smaller, at 141MB as it doesn't need the kernel and other bits and pieces. I'm not sure on the current Docker build size, but I imagine that should be comparable to the LXC build.

If you are after a minimalist Docker build, then we did start work on TKLX this year. Our base container weighs in at only 12MB! Although that is compressed, IIRC even expanded it's still less than 30MB (if you have a play and discover I'm wrong, please correct me). That is slated to be the basis of our "next gen" platform (leveraging containerisation).

Unfortunately, our ideas and plans are huge, but our resources are limited. So we've had to put that aside for now to ensure that we don't fall too far behind Debian's release cycle. I'm really hoping to get back to it once TurnKey v15.0 (based on Debian Stretch) is released.

IIRC TKLX was based on Debian Stretch, but while it was still in testing. TBH, I'm not really sure what state our base container is in currently, but you can find it on GitHub and/or the Docker Hub. We have a few other containers too, have a look here: GitHub and/or the Docker Hub.

I'd really love some feedback and thoughts about it, so please let us know how you go if you end up playing with it.

c.monty's picture

Hi Jeremy,

 

happy new year!

 

Actually I'm searching a LXC build because my server platform (Proxmox) does not support Docker natively.

My interpretation of your reply is that there's no really small LXC build for Debian available, right?

 

KR

Jeremy Davis's picture

Happy new year to you too! :)

TBH, I'm not really sure what you are expecting?! IMO 141MB for a complete OS IS "really small"! That's less than half the size of the Debian net-installer (which downloads almost everything during the install). The default "minimalist" Debian headless server LXC container is closer to 200MB!

Keep in mind that an LXC container still requires essentially a complete operating system. The only component that can be removed without impacting OS functionality is the kernel (and modules - last time I checked, the kernel package weighs in at about 30-40MB).

That's why you can get away with a tiny Docker container, because it doesn't need to provide a complete OS. If you want super tiny, then why not install Docker on Proxmox? (It's just Debian under the hood). Alternatively, if you don't want to do that, what about installing a slim headless OS under KVM (i.e. proper VM) and install Docker on that?

You could trim our LXC image down a bit more if you don't want stuff like Webmin and Webshell (probably lighten it by another 20MB or so) and removing all our custom tools such as TKLBAM, you may even get it under 100MB but after that, you're probably going to start breaking stuff.

I assume that this is more than just an academic exercise though?! So eventually, you're going to want to do things with your minimal container. That will require installing stuff, which will have dependencies. And once you start removing fundamental components, chances are you're going to need to reinstall them (as dependencies) as soon as you install anything else. IMO there wouldn't be much value in a 50MB LXC container that required you to install 50MB+ of dependencies any time you want to install anything else at all. IMO you would be better off with a 100MB container that already includes all that (and save the time downloading deps everytime)...

Besides, in this day and age of really cheap spinney harddrives and relatively cheap SSDs I'm not even clear why saving 50MB or so even matters that much? Even if you have 1000 containers running, and could trim 100MB from each container, assuming that you can keep the extra ~100MB off after installing dependencies, that still only equates to an extra 100GB storage at most!

Sure it makes it better when you need to download and upload them, but once you have them on premises, I fail to see any real advantage to an image which is tiny (vs one which is quite small).

But perhaps I'm missing the point of why you want super slim containers? Please feel free to give a bit more context.

One other thing, Alpine provide crazy super slim containers and you can install them direct from the Proxmox web UI. However, the trickery they use to get their images so small is that they compile everything against a super minimalist C library called musl. musl is super small and builds super small binaries, but it's not as featureful as say Debian (compiled against GNU libc). So IMO it's a significant trade-off, but depending on what you are running, and your rationale for wanting something small perhaps that's ok?!

Post new comment