Alpine Linux: Brilliant Linux Distro
wiki.alpinelinux.org
wiki.alpinelinux.org
eg https://www.linkedin.com/pulse/musl-libc-alpines-greatest-we...
AWS support's only advice was "don't use Alpine"; annoyingly, switching the containers to a Debian base cured it, even though this would appear to make absolutely no sense with respect to it failing in just one AZ.
Thank you for sharing. Did you notice that some language are more affected than others?
For example Go vs. Node.js?
Note that some DNS resolvers do not provide truncated UDP results apparently so that might explain some of the weird DNS issues people see https://twitter.com/RichFelker/status/994629795551031296
Isn't this a little overstated? I'm willing to accept it has a majority, especially once you get into custom images, but e.g. docker's library images are usually debian based, with a -slim or -alpine variant available, and of developer provided images on my network, debian + derived images have a majority, while Alpine's statement leads you to expect some kind of 90% share.
Postgres (Docker provided - https://hub.docker.com/_/postgres): Debian (with alternates for alpine or other debian versions)
Jellyfin (Developer provided - https://github.com/jellyfin/jellyfin/blob/master/Dockerfile): They use an alpine build step but the final distributed image is debian
Calibre-Web (Linuxserver provided - https://github.com/linuxserver/docker-calibre-web/blob/maste...): Ubuntu
Graylog (Developer provided - https://github.com/Graylog2/graylog-docker/blob/4.2/docker/o...): Debian
Vaultwarden (Developer provided - https://github.com/dani-garcia/vaultwarden/blob/main/docker/...): Debian (with alpine alternate available)
I'm finding it hard to reconcile "Some of the software has secondary alpine images available" with "Almost all software uses alpine images"
For professional use, our company mandates all images used are built off a common base image, which is Ubuntu based (my previous employer was similar, but used a Red Hat based image).
But with both Ubuntu and Debian shipping much smaller images, I almost always find the hassle of using Alpine not worth it.
https://hub.docker.com/layers/debian/library/debian/stable-s...
Could you go into more detail about the challenges one could encounter when using Alpine?
Based on debian so no musl headaches but even lighter than alpine
I've recently switched to using Alpine on my laptop, and have written a bit about setting it up using ansible here:
https://www.brianlane.com/post/alpine-laptop/
And when you can't find the apps you need in the distribution there's always podman:
vs upstream saying
> Using x11docker as a sandbox is not intended to run obviously evil software.
This seems to be born out in multiple people's micro benchmarks though how much of an issue it is for larger applications probably depends on the workload.
https://superuser.com/questions/1219609/why-is-the-alpine-do...
https://nickjanetakis.com/blog/benchmarking-debian-vs-alpine...
This release features the new "mallocng" malloc implementation, replacing musl's original dlmalloc-like allocator that suffered from fundamental design problems.
https://inbox.vuxu.org/musl/20200518194204.GG21576@brightrai...
Pretty good writeup from the authorhttps://musl.libc.org/releases.html Rest of the detail in the actual changelog is worth reviewing too
https://gitlab.alpinelinux.org/alpine/aports/
It's worth reading the contributor guide[1] before signing up and providing any fixes and improvements - and from there, hopefully it's a relatively familiar workflow for many developers.
[1] - https://wiki.alpinelinux.org/wiki/Alpine_Linux:Contribute
It's not at the same level, but it's progress...
https://github.com/richfelker/musl-cross-make
Just burned out static toolchains that make me static binaries for all architectures gcc supports. Much like musl.cc but they suggest building your own and I do.
I use these toolchains on debian (/ anywhere a non-ancient linux kernel runs) to make static binaries, you can too!
There's also this fork of MCM that's a fair amount more active, as it backs musl.cc. I probably should have mentioned it
https://git.zv.io/toolchains/musl-cross-make
Regardless, your argument that a distro taking care of something for you is exactly what they're there for. Makes sense to me.
Mostly surfacing that there's multiple ways to handle that sort of thing. I find cross compiling simplest with these and version bumping wasn't a big deal at all compared to the complexities of other ways of cross compiling.
Its wiki does a fine job at being a pretty good resource for documentation, too, and both ArchWiki & Gentoo Wiki work well as fallbacks.
Not quite ready for desktop development use yet despite my best efforts.
I use Arch btw.
It's a fine distro, you can typically go a good bit of time between updates without worrying about fragging your install, which is especially important to me on personal projects, which are often more like pets than livestock :P
Should I instead be using Alpine? If someone is isn't distro aficionado and is utilizing "mainstream" docker images, what's the recommendation?
If you're using headless boxes for servers then Ubuntu or the house variety of the cloud platform of your choice is almost certainly best.
If you're looking for employee workstations I would go for something that looks and feels like Windows like Linux Mint or Kubuntu.
For shame, but I'm leaving my comment as is
Ubuntu comes with snaps. If you don't use snaps, they are consuming a not insignificant portion of boot time. Use Debian if you need something glib-based. If you must use Ubuntu, make sure you are using slim: you don't need manpages etc. in a production container.
Overall boot time is affected by image size, because your cluster has to download that image from $SERVER. Alpine is smaller than most, scratch is even better (if you can pull it off). Building containers with Nix can result in stupidly small images.
Its not clear-cut, but hopefully that helps you make a choice.
Not sure if you're trying to make your own containers or not, but stick to the stock Docker Hub containers as much as possible. If there's an "official" Redis container, use that, regardless of the base image. Since it's supported, other people will be fixing bugs and upgrading things so you don't have to.
> If someone is isn't distro aficionado and is utilizing "mainstream" docker images, what's the recommendation?
For non-container stuff, CentOS is the "enterprisey" distro that's safest in case you one day have to support an app that only supports RHEL (and it's the base for Amazon Linux, in case you use AWS).
For container stuff, it's a toss-up between Ubuntu and Debian; I'd use Ubuntu for developer-oriented stuff, and Debian for anything else. You can of course use Alpine for containers, but there are some maintenance/development costs that come as well, so I only recommend Alpine if you really need to save space.
Wow, that's impressive! However, when I check on Distrowatch it's only in the 30s. Is there a better statistic? Something more representative of actual amounts of installs on anything at all?
1 - Distrowatch stats are both gamed and useless
2 - There's no easy way to see which distro is most popular on the whole.
With regard to Alpine Linux on Docker, the install count[0] of the base image should give an idea (over 1 billion!).
[0] https://hub.docker.com/_/alpine
Edit: clarity
Here is my Alpine Linux minimalist desktop setup.
https://github.com/git-sgmoore/AlpineLinux-DailyDriverDeskto...
Pair it with xcfe (or gnome or kde) and you have a super desktop, no more worries about RAM or background processes eating up CPU (looking at you Windows).
Yes, there’s a Blender package! and many other good stuff.
Alpine made Linux fresh again, and yes I have 32GB of RAM and a fast CPU and SSD, using Alpine will make sure it stays fast
It needs much less than that to run, of course, it’s brilliantly focused.
Isn't musl generally less performant than glibc?
I’d rather not tip toe around the oddities that alpine introduces and just use a Debian based image.
Digest pinning is what should be used in any system that matters.
I mean, what I'm trying to say is that the base image doesn't matter, it would be basically just a debugging environment for you to exec into.
Alpine is a distro with a purpose, and that is worth 'worrying' about.