M
MeshWorld.
HowTo Docker Ubuntu macOS Windows Install Containers DevOps Developer Tools 4 min read

How to Install Docker on Ubuntu, macOS and Windows

By Vishnu Damwala

Docker on Linux means Docker Engine — a lightweight, command-line native installation. Docker on macOS and Windows means Docker Desktop — a GUI application that runs a Linux VM under the hood.

Here’s how to install both correctly.


Install Docker on Ubuntu / Debian Linux

The cleanest method is through Docker’s official apt repository.

Step 1: Remove old versions

sudo apt-get remove docker docker-engine docker.io containerd runc

Step 2: Set up the repository

# Install dependencies
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# Add Docker's official GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the Docker repository
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Step 3: Install Docker Engine

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Step 4: Run Docker without sudo

By default, Docker requires sudo. Add yourself to the docker group to avoid this:

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

Log out and back in for the change to take full effect.

Step 5: Verify

docker run hello-world

You should see: Hello from Docker!


Install Docker on macOS

Docker Desktop (official)

Download from docs.docker.com/desktop/install/mac-install.

Choose the right download for your chip:

  • Apple Silicon (M1/M2/M3/M4) → Apple Silicon installer
  • Intel → Intel chip installer

Double-click the .dmg, drag Docker to Applications, and open it.

Docker Desktop will ask for privileged access on first launch — allow it.

With Homebrew Cask

brew install --cask docker

Then open Docker Desktop from Applications to start the daemon.

Verify

docker --version
docker run hello-world

Install Docker on Windows

Docker Desktop (official)

Requires Windows 10 64-bit (version 1903 or later) or Windows 11.

Download from docs.docker.com/desktop/install/windows-install.

Run the installer. It will:

  • Enable WSL 2 (Windows Subsystem for Linux) if not already enabled
  • Install the WSL 2 Linux kernel update
  • Configure Docker to use WSL 2 backend

After install, restart your machine.

With winget

winget install Docker.DockerDesktop

Restart after installation, then open Docker Desktop from the Start menu.

Verify

Open PowerShell or Command Prompt:

docker --version
docker run hello-world

Docker Compose

Docker Compose is included in modern Docker installations as a plugin:

docker compose version

If you’re on an older install that uses the standalone docker-compose command, update to Docker Engine 20.10+ to get the plugin version.


Common first commands

# Pull an image
docker pull nginx

# Run a container
docker run -d -p 8080:80 nginx

# List running containers
docker ps

# List all containers (including stopped)
docker ps -a

# Stop a container
docker stop <container_id>

# Remove a container
docker rm <container_id>

# List images
docker images

# Remove an image
docker rmi <image_name>

# Open a shell inside a running container
docker exec -it <container_id> bash

Run a quick web server to test

docker run -d -p 8080:80 --name test-nginx nginx

Open http://localhost:8080 in your browser. You should see the Nginx welcome page.

Clean up when done:

docker stop test-nginx
docker rm test-nginx

Updating Docker

Ubuntu:

sudo apt update && sudo apt upgrade docker-ce

macOS / Windows: Docker Desktop updates itself. Check for updates in the Docker Desktop menu → Check for Updates.

Once Docker is running, see the Docker Cheat Sheet for the commands you’ll use every day, or learn How to Write a Production Dockerfile for Node.js.