Setting Up a Software Development Environment on Alpine Linux
blog.overops.com
blog.overops.com
Ubuntu is 88MB:
ubuntu bionic 47b19964fb50 5 weeks ago 88.1MB
Definitely not Alpine levels of small, sure, but the size in the article is off by a digit. But not that big, either, and I find a huge number of devs are more familiar with Ubuntu.I'm also throwing Python into the container, so the base container size is very quickly dwarfed by that. I think if you're using something like golang or Rust, the gains would be a lot more meaningful.
(It is honestly hard enough to get people to take the time to upgrade between those. We had finally gotten the last bits off precise I feel like when bionic came out.)
While my office has a great connection, my ISP at home is less so, particularly in the up direction. On mobile, pushing 80-200MB up is essentially not going to happen, both because it eats into my data caps quickly, and because mobile latency is such that that's really slow.
There are some missing luxuries like obconf and Emacs gui, but I mainly use it for browsing and sshing into Debian servers where I can just use vim anyway.
It was actually really straightforward to setup, too.
Now, if you want to try native Alpine as your desktop just for the fun of it, that's fine, but it's going to be a pretty constrained environment, and may not have been worth the several hours it took to get it going.
The creator of Alpine Linux, Natanael Copa, reportedly went to work for Docker, so presumably Natanael thinks it's a reasonable use-case. Solomon Hykes, Docker's CTO at the time, posted about it on HN: https://news.ycombinator.com/item?id=11000827
Alpine Linux, as I understand it, strives to be a lightweight and minimalist distribution of Linux. That's exactly what you'd want to run as a container, assuming you are going to run a Linux distribution and one that's different than the production host system.
This is from a CVE that was released a little over a month ago.
Also it didn't really have anything to do with the Docker daemon running as root, it was triggered by the use of root users in containers (blocked if the user didn't do that, had decent SELinux setups or used user namespaces)
For upthread comparison, the debian:stable-slim container is 22MB.
That includes perl, tzdata, apt, bash, coreutils/util-linux and... basically nothing else. It's a very minimal rootfs that can still be easily extended. (The standalone perl docker image is over 300MB.)
"The Alpine Linux build previously available on this page was removed as of JDK 12 GA. It’s not production-ready because it hasn’t been tested thoroughly enough to be considered a GA build. Please use the early-access JDK 13 Alpine Linux build in its place."
"At present, some glibc-linked shared libraries can be loaded with musl, but all but the simplest glibc-linked applications will fail if musl is dropped-in in place of /lib/ld-linux.so.2"
https://www.musl-libc.org/faq.html
Some of the differences are listed here: https://wiki.musl-libc.org/functional-differences-from-glibc...
Void seems to be more focused on power user experience, in the vein of Gentoo / Arch. So glibc or musl as an option, lack of systemd, and a pacman-like package manager (xbps) are all means to that end.
Alpine gets lots of usage as a Docker base layer due to that small size. Void certainly could be used as a Docker base image, but that's much less common than Alpine because the image sizes are probably roughly comparable to Debian and when running in a container the systemd vs not-systemd choice becomes less relevant.
Alpine: Stable releases that are supported 2 years, musl-only. EDIT: Oops, forgot that "edge" is a rolling release.
I personally prefer Void for desktop and Alpine for servers/containers/appliances, but either could be used for either.
From AWS's What is Devops? https://aws.amazon.com/devops/what-is-devops/
Or is there something even better/lighter?