Linux in DevOps
DevOps is the practice of combining software development (Dev) and IT operations (Ops) to ship software faster and more reliably. Linux is the foundation that virtually every DevOps tool is built on.
If you want to work in DevOps, you need Linux. This is not an exaggeration.
CI/CD Runners Run on Linux
Every major CI/CD platform defaults to Linux:
| Platform | Default Runner | Notes |
|---|---|---|
| GitHub Actions | ubuntu-22.04 |
Free tier uses Ubuntu |
| GitLab CI | Linux (Docker executor) | Default Docker images are Alpine/Ubuntu |
| Jenkins | Linux agents | Typical Jenkins setup is Linux servers |
| CircleCI | Linux | Machine executor is Ubuntu |
| AWS CodeBuild | Amazon Linux 2 | Linux-based |
| Google Cloud Build | Debian Linux |
# GitHub Actions — this runs on Ubuntu Linux
jobs:
build:
runs-on: ubuntu-22.04 ← Ubuntu Linux runner
steps:
- uses: actions/checkout@v4
- run: echo "I am running on Linux"
- run: uname -a
# Linux runner-name 5.15.0-1052-aws ... Ubuntu
Your deployment scripts, test commands, and build steps all execute on Linux. Understanding Linux means understanding why your CI jobs succeed or fail.
Docker Is Linux-Native
Docker containers share the host Linux kernel. Every container, regardless of what application it runs, uses a Linux kernel underneath.
# The Docker workflow is entirely Linux-based
docker build -t myapp . # builds a Linux container image
docker run -d -p 8080:80 myapp # runs it using Linux namespaces + cgroups
# Inside the container:
docker exec -it myapp bash
root@container:/# cat /etc/os-release
# NAME="Ubuntu" or "Alpine Linux" — always Linux
Container concepts that ARE Linux concepts:
- Namespaces — Linux feature that isolates processes (PID, network, filesystem)
- cgroups — Linux feature that limits CPU and memory usage per container
- OverlayFS — Linux filesystem that implements container image layers
Understanding Linux helps you understand Docker deeply — not just surface-level commands.
Kubernetes Nodes Are Always Linux
Every Kubernetes worker node runs Linux. When you deploy a pod, it lands on a Linux machine:
# Kubernetes pod spec — runs on a Linux node
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: ubuntu:22.04
command: ["sleep", "infinity"]
# SSH into a Kubernetes node (EKS example)
ssh ec2-user@<node-ip>
$ uname -a
Linux ip-10-0-1-23 5.10.209-198.812.amzn2.x86_64 ... Amazon Linux
# Or exec into a running pod
kubectl exec -it my-app -- bash
root@my-app:/# ls /
bin boot dev etc home lib media mnt opt proc root ...
# Standard Linux filesystem
Infrastructure as Code Tools Are Linux-First
The leading IaC tools are designed and tested primarily on Linux:
| Tool | Runs Best On | Windows Support |
|---|---|---|
| Terraform | Linux | Yes (but providers tested on Linux) |
| Ansible | Linux (control node must be Linux/macOS) | No control node on Windows |
| Pulumi | Cross-platform | Yes |
| AWS CDK | Cross-platform | Yes |
| Helm | Linux/macOS | Yes |
Ansible is especially Linux-specific: the Ansible control node (the machine running Ansible) must be Linux or macOS. You cannot run Ansible on Windows directly (you need WSL2).
Linux CLI Skills Are a DevOps Prerequisite
DevOps job descriptions consistently require:
- SSH into servers and debug production issues
- Read and analyse log files (
tail -f,grep,awk) - Write shell scripts for deployment and automation
- Configure systemd services
- Manage file permissions (chmod, chown) for security
- Use package managers (apt, yum) for dependency management
- Monitor system resources (top, htop, df, du, free)
None of these are optional. A DevOps engineer who cannot navigate Linux is like a mechanic who cannot use a wrench.
Key Takeaways
- Every major CI/CD platform (GitHub Actions, GitLab CI, Jenkins) runs Linux
- Docker containers are Linux technology — namespaces, cgroups, OverlayFS
- Kubernetes worker nodes are always Linux
- Ansible control nodes must run on Linux or macOS — Windows not supported
- Linux CLI skills appear in virtually every DevOps and cloud engineering job description
| ← Back to Why Linux Matters | Next → Linux in the Cloud |