ECS vs EKS — When to Use Each on AWS

If you’re deploying containerised workloads on AWS, you’ll quickly hit the ECS vs EKS question. Both run containers. Both integrate with the AWS ecosystem. But they solve the problem differently, and picking the wrong one creates unnecessary complexity. What They Are Amazon ECS (Elastic Container Service) is AWS’s own container orchestration service. You define tasks (container specs), put them in services, and ECS handles scheduling and scaling. It’s opinionated, tightly integrated with AWS, and designed to be simple. ...

June 10, 2026 · 3 min · 515 words · Kiprono Elijah

How to Install Docker on Ubuntu (Including EC2)

Ubuntu is the most common Linux distribution for running Docker — whether on a local dev machine, a CI runner, or an EC2 instance. The install process is the same in all three cases. Update the System sudo apt update && sudo apt upgrade -y Install Required Packages sudo apt install -y apt-transport-https ca-certificates curl software-properties-common Add Docker’s Official GPG Key curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg Add the Docker Repository echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null Install Docker Engine sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io Start Docker and Enable at Boot sudo systemctl start docker sudo systemctl enable docker Allow Non-Root Usage (Recommended) By default, Docker commands require sudo. Add your user to the docker group to remove that requirement: ...

June 10, 2026 · 2 min · 383 words · Kiprono Elijah

Makefile Explained

What is a Makefile? A Makefile is a declarative build script used by the make tool to automate tasks like compiling code, running scripts, cleaning directories, or managing dependencies. It’s most useful when: You want to codify a repeatable workflow You want one-liner commands for multi-step processes You work across environments (e.g., Docker, EC2, CI/CD) Basic Syntax and Anatomy # Syntax: #target: dependency1, dependency2, … #<TAB>recipe (command 1) #<TAB>recipe (command 2) # ... # Example of Makefile entry train: data/processed.csv python src/train.py --input data/processed.csv --output model.pkl Key Concepts: target: The name of the file or alias you want to build (e.g. train) dependencies: Files that the target depends on, in the case above data/processed.csv is the dependency. recipe: Command(s) to run if dependencies are newer than target. in the example above recipe is python src/train.py --input data/processed.csv --output model.pkl Tab is required. Space will break it. ...

June 6, 2026 · 6 min · 1159 words · Kiprono Elijah

Docker Commands Cheat Sheet

Here’s a curated list of the most important Docker commands, grouped by what you actually do — not alphabetically. 1. Build & Tag Images docker build -t name:tag . Builds an image from a Dockerfile in the current directory. docker build -t my_app:latest . Most common flags: -f — specify a different Dockerfile path . — the build context (current directory); omit -f when the Dockerfile is in the same directory --no-cache — force a full rebuild, skipping the layer cache -t / --tag — give the image a name and optional version tag; defaults to latest if omitted Pro tip: Add a .dockerignore file to exclude unnecessary files (__pycache__, .git, data dumps) from the build context — it can dramatically speed up builds. ...

July 26, 2025 · 4 min · 773 words · Kiprono Elijah