Linux Distributions
Linux is not one single operating system. It is a family of operating systems built around the same core (called the Linux kernel, the low-level program that talks to your hardware). A distribution (often shortened to “distro”) is a complete, ready-to-use package: the kernel plus a package manager, default tools, and a set of design choices bundled together. Picking the right distro matters because it decides how you install software, how often you get security updates, and how much help you can find online when something breaks.
What exactly is a distribution?
Think of the Linux kernel as a car engine. On its own, an engine is useless — you cannot drive it. A distribution wraps that engine in everything else you need: a chassis, seats, a dashboard, and a factory that ships you spare parts. That “factory for spare parts” is the package manager (the tool that downloads, installs, and updates software for you).
Every distro makes three big decisions that shape your daily life as an engineer:
- Package manager and format — how you install and update software (for example
apton Ubuntu,dnfon Fedora,apkon Alpine). - Release model — whether you get a stable, long-supported version that changes slowly, or a “rolling” version that always ships the newest software.
- Default size and tooling — a full desktop with hundreds of packages, or a tiny base meant for containers.
The major distribution families
Almost every distro you will meet belongs to one of a few families. Members of a family share the same package manager and file layout, so skills transfer easily within a family.
| Family | Popular members | Package manager | Format | Typical use |
|---|---|---|---|---|
| Debian / Ubuntu | Debian, Ubuntu, Linux Mint, Pop!_OS | apt (uses dpkg) | .deb | Servers, cloud VMs, beginner desktops |
| RHEL / Fedora | RHEL, Rocky Linux, AlmaLinux, Fedora, CentOS Stream | dnf (older yum) | .rpm | Enterprise servers, regulated companies |
| Alpine | Alpine Linux | apk | .apk | Docker containers, tiny images |
| Arch | Arch Linux, Manjaro | pacman | .pkg.tar.zst | Power users, latest software (rolling) |
Tip: A package format is not the same as a package manager.
.debis the file format;aptis the friendly tool you actually run. Knowing one Debian-family distro means you already know how to install software on all of them.
Debian and Ubuntu
Debian is one of the oldest and most respected Linux projects. It prizes stability above all else, which makes it a rock-solid server base — but its software can be a bit old by the time it ships.
Ubuntu is built on top of Debian. It adds polish, modern hardware support, regular predictable releases, and commercial support from a company called Canonical. This is why Ubuntu is the default choice on almost every cloud provider (AWS, Google Cloud, Azure all offer it).
Ubuntu ships two kinds of releases:
- LTS (Long-Term Support) — released every two years (22.04, 24.04, 26.04). Each LTS gets 5 years of free security updates. Use these for anything serious.
- Interim releases — released every six months. They get only 9 months of support. Avoid these for servers.
The number in “Ubuntu 24.04” is just the year and month it was released: April 2024. “LTS” after it means it is a long-support version you can trust in production.
When to use Ubuntu: This is the right default for almost everyone learning DevOps. Pick Ubuntu Server LTS for servers and Ubuntu Desktop LTS for a development laptop. The huge community means nearly every error you hit has already been answered online.
RHEL, Fedora, and the CentOS story
RHEL (Red Hat Enterprise Linux) is a paid, heavily-supported distro aimed at large companies, banks, and government — places that need certified support contracts and very long stability.
Fedora is Red Hat’s free, fast-moving distro where new features are tested before they reach RHEL. CentOS used to be a free rebuild of RHEL, but it changed in 2021 into “CentOS Stream,” which now sits ahead of RHEL instead of mirroring it. Many teams moved to the free RHEL clones Rocky Linux and AlmaLinux as drop-in replacements.
When to use the RHEL family: Choose it if your company already standardizes on Red Hat, needs a paid support contract, or works in a regulated industry. For learning DevOps from scratch, you do not need it.
Alpine Linux
Alpine is a deliberately tiny distro. A base Alpine image is only about 5 MB, compared to roughly 75 MB for a minimal Ubuntu image. It achieves this by using small, lightweight building blocks instead of the larger components most desktops use.
When to use Alpine: It is the go-to base for Docker containers (lightweight, isolated app bundles). Smaller images download faster, use less disk, and have fewer programs that could contain security holes. When NOT to use it: avoid Alpine for general-purpose servers or as a learning desktop — it behaves differently from mainstream distros, and some software needs extra tweaking to run on it.
How package managers differ in practice
Here is the same task — installing the Nginx web server — on each major family.
# Debian / Ubuntu
sudo apt update
sudo apt install -y nginx
# RHEL / Fedora / Rocky / Alma
sudo dnf install -y nginx
# Alpine (inside a container, usually as root)
apk add nginx
On Ubuntu, you can confirm which version you installed:
nginx -v
Output:
nginx version: nginx/1.24.0 (Ubuntu)
You can always check which Ubuntu release a server is running:
lsb_release -a
Output:
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
How to choose — a quick decision guide
| If you… | Choose | Why |
|---|---|---|
| Are new to Linux or DevOps | Ubuntu Desktop LTS | Friendliest, biggest community |
| Run a cloud server or VM | Ubuntu Server LTS | Cloud default, 5-year support |
| Need a paid enterprise contract | RHEL (or Rocky/Alma free) | Certified support, very stable |
| Are building Docker images | Alpine | Tiny, secure, fast to pull |
| Want the absolute newest software | Fedora or Arch | Rolling / frequent releases |
For this documentation series, every example targets Ubuntu LTS, because it is the most common distro you will meet on real servers and the easiest to learn on.
Best practices
- Default to Ubuntu LTS for both learning and production servers — long support and the largest community make troubleshooting far easier.
- Never run an interim or end-of-life release in production. Check your version’s support window before deploying.
- Stick to one family per environment so your team’s
apt/dnfskills and automation scripts stay consistent. - Use Alpine only for containers, not for full servers, unless you have a specific size requirement and know its quirks.
- Match your local machine to your servers where you can — developing on Ubuntu and deploying to Ubuntu avoids surprising differences.
- Update before you install: always run
sudo apt updatefirst so you fetch the latest package list and security fixes.