How To Install Docker In Linux

How To Install Docker In Linux

Reading time1 min
#Docker#Linux#Cloud#Ubuntu#Containers#DevOps

Step-by-Step Guide to Installing Docker on Linux: From Setup to Running Your First Container

Docker is a game-changer for Linux developers and sysadmins, simplifying application deployment and environment management. Mastering its installation process ensures a solid foundation for scaling modern cloud-native applications efficiently.

Instead of treating Docker as just another package to install, understand the underlying Linux system nuances that impact Docker performance and security — this guide unveils the critical how and why behind each installation step, empowering you with control beyond default scripts.


Why Install Docker Manually?

Many tutorials tell you to run a quick install script and move on. But Docker interacts closely with your Linux kernel features like cgroups and namespaces, so understanding dependencies and repository choices ensures better stability, updates, and security.

This step-by-step guide focuses on manual installation from the official Docker repositories on Ubuntu (the most popular Docker on Linux distro), but the principles apply broadly to Debian-based distros. For other distributions, commands may vary slightly.


Step 1: Prerequisites - Update & Prepare Your System

Before installing Docker, update your package lists to ensure you get the latest available versions and install packages needed to allow apt to use repositories over HTTPS:

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Why?
APT needs HTTPS support for securely downloading packages. curl will fetch the GPG key, while software-properties-common helps add external repositories conveniently.


Step 2: Add Docker’s Official GPG Key

The GPG key ensures that packages downloaded from Docker's repository are authentic:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Why not just accept unsigned packages? Security best practices dictate verifying package sources using cryptographic signatures. This minimizes the risk of tampered software entering your environment.


Step 3: Add the Docker APT Repository

Add the official Docker repository to your APT sources list:

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

Replace $(lsb_release -cs) with your Ubuntu codename if needed (e.g., focal for Ubuntu 20.04).

Note:
Using this approach lets you get the latest stable Docker releases directly from Docker instead of distro package maintainers who might lag behind.


Step 4: Update APT Again & Install Docker Engine

Now refresh your package database and install docker engine components:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  • docker-ce: The core Docker Engine Community Edition.
  • docker-ce-cli: Command line interface for docker commands.
  • containerd.io: Container runtime required by docker.

Step 5: Verify Your Installation

Check if Docker is installed properly by running:

sudo docker run hello-world

What happens?

  • If successful, a test container runs printing a welcome message.
  • If it fails, inspect error messages regarding permissions or daemon status.

Step 6: Manage Docker as a Non-Root User (Optional but Recommended)

By default, docker commands need root privileges (sudo). To avoid prepending every command with sudo, create a user group called docker:

sudo groupadd docker   # May say group exists; safe to ignore
sudo usermod -aG docker $USER

After this, log out & back in (or restart shell session). Confirm by running:

docker run hello-world

without sudo.

Why?
Running as root increases risk surface — unprivileged users cannot accidentally break system components or elevate privileges via misconfigurations.


Step 7: Enable & Start Docker Service Automatically

Make sure Docker starts on system boot:

sudo systemctl enable docker.service
sudo systemctl start docker.service

You can check status anytime:

systemctl status docker.service

Bonus — Running Your First Custom Container

Let’s pull and run a simple NGINX web server container interactively:

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

Open your browser at http://localhost:8080 — you should see NGINX’s default welcome page.

To stop it later:

docker stop mynginx && docker rm mynginx

Tips to Keep in Mind

  • Kernel version matters: For advanced features like cgroups v2 support or overlayfs storage driver improvements, make sure your Linux kernel is up-to-date.
  • Storage management: By default, Docker stores images/containers in /var/lib/docker. This can grow large — consider mounting it on separate partitions if using intensively.
  • Security updates: Stay current with security patches by periodically running apt-get update && apt-get upgrade.
  • Use trusted images: Always pull images from official or verified repositories on Docker Hub, or build your own.

Conclusion

Instead of blindly running convenience scripts or distro-provided packages that may be outdated or insecure, following this manual process gives you full insight into how Docker hooks into Linux systems. Understanding prerequisites like GPG key verification and repo setup reinforces how security ties into software deployment tools in real environments. Once installed correctly, you’re ready to harness containers for development agility and reliable cloud-native application lifecycle management.

Happy Dockering! 🚢🐳


If this tutorial helped you get started with Docker on Linux smoothly, feel free to share or comment below! Got stuck at any step? Ask away — I’m here to help troubleshoot practical issues.