Linux in DevOps

3 minute read

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

Updated: