Skip to content

Lab: Docker Setup on RHEL/CentOS and Ubuntu/Debian

Lab Info

Estimated Time: 60–90 minutes Audience: Beginners Tools used: RHEL 9 / CentOS Stream, Ubuntu 22.04 / Debian 11, Docker CE (Community Edition)


Learning Objectives

  • Install Docker on Linux systems.
  • Understand how to start and enable Docker service.
  • Run a test container to verify installation.
  • Launch a simple Nginx container to see Docker in action.
  • Visualize Docker workflow in DevOps.

Install Docker

Step 1: Update system

sudo dnf update -y

Explanation: Updates your system packages for stability and compatibility.


Step 2: Remove old versions (if any)

sudo dnf remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

Explanation: Removes old Docker versions that may cause conflicts.


Step 3: Enable Docker CE repository

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Explanation: Docker CE is not in RHEL/CentOS base repos. This command adds Docker’s official repo.


Step 4: Install Docker CE

sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Explanation: Installs Docker Engine, CLI, container runtime, and Docker Compose plugin.


Step 5: Start and enable Docker service

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

Explanation: Starts Docker now and ensures it starts on boot.


Step 6: Verify installation

sudo docker run hello-world

Explanation: Runs a test image from Docker Hub. If successful, Docker is working.


Step 7: Run an Nginx container

sudo docker run -d -p 8080:80 --name webserver nginx
  • Visit: http://<your-server-ip>:8080

Explanation: Launches an Nginx web server container. Port 8080 on your host maps to container’s port 80.

Step 1: Update system

sudo apt update
sudo apt upgrade -y

Explanation: Updates package lists and upgrades existing packages.


Step 2: Remove old versions

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

Explanation: Ensures no legacy Docker is present.


Step 3: Install required packages

sudo apt install -y ca-certificates curl gnupg lsb-release

Explanation: These tools allow adding secure repositories and managing keys.


Step 4: Add Docker’s official GPG key

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Explanation: Adds Docker’s signing key to verify package integrity.


Step 5: Set up repository

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Explanation: Adds Docker’s official repo to apt sources.


Step 6: Install Docker CE

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

Explanation: Installs Docker engine, CLI, container runtime, and Compose plugin.


Step 7: Start and enable Docker service

sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker

Explanation: Starts Docker now and on future boots.


Step 8: Verify installation

sudo docker run hello-world

Explanation: Confirms Docker can pull images from Docker Hub and run containers.


Step 9: Run an Nginx container

sudo docker run -d -p 8080:80 --name webserver nginx
  • Visit: http://<your-server-ip>:8080

Explanation: Runs a web server inside a container and exposes it.


Visualization of what happened

  • Docker Engine: core service managing containers.
  • Images: pre-packaged software (like templates).
  • Containers: running instances of images.
  • Docker Hub: central registry where images come from.
  • hello-world: confirms Docker works.
  • nginx: practical example of running an application container.