Yes I know, but Ubuntu seems to be more popular as a desktop
What I mean is that people just hack on stuff on their desktop. They install Python NumPy or Rails or whatever. Like gigabytes of dependencies.
And then they want to deploy.
Is it easy to do that with Flatcar Container Linux? How do I do it?
Or is it easier to make a Docker file that does apt-get install X and pip install Y ?
You can do that with Ubuntu as a base image, and Debian usually "just works" if you're on Ubuntu. (I'm doing this with our Debian CI images)
Not saying you should always take the easier path, but I also think it's a good idea to minimize the differences between the dev environment and production
It's intended for a workflow where you build docker containers, and deploy docker containers, so the environment is identical. If all you deploy is containers, it makes sense for the host OS to be as small as possible, and as immutable as possible.
True, but devs like me started with Ubuntu. Then years later we see a Debian docker image and wonder how different it will be. Mostly the same, for the reason you mentioned.
The intention is to do all of your development in containers, in whatever environment you choose, and then deploy the containers into production on a Flatcar cluster.
As Flatcar is a very minimal, immutable distribution to run containers / Kubernetes, our development environment (aka the "Flatcar SDK") is containerised too.
Flatcar releases are tied to git commits in our distro automation repo; so to develop for Flatcar, one would:
1. clone the distro automation repo
2. check out the release version one wants to develop for (tag or branch)
3. starts the SDK container via a wrapper script in the repo
This enables Flatcar development across all distros that run git, and docker or podman (it even works on WSL if one is inclined to use it that way).
I think Ubuntu is a popular base image in Docker because Ubuntu is popular for engineers to use on their desktops
Debian usually passes for Ubuntu, since the package names are mostly the same.
So either you do all your development in containers, or you have drift between the dev environment and the cloud.