About This Course
This programme gives beginners a complete, hands-on path to running real applications with Docker, from first container to a multi-service stack deployed on their own server. It focuses solely on Docker (no Kubernetes), trading breadth for the depth needed to make participants genuinely self-sufficient by the end of three days. The programme assumes no prior Linux or command-line experience.
Day 1 begins by setting up a working environment on Windows with WSL2 and Docker Desktop, plus a short terminal survival kit, before any Docker concept is introduced. The course is built around one realistic, recurring scenario: containerising and operating a web stack made of Nginx, a backend application, a database, and phpMyAdmin with Docker Compose. Every concept ; images, Dockerfiles, volumes, networking, logging, security, backup is taught in service of getting that stack running, troubleshooting it, securing it, recovering it, and redeploying it without fear.
By the end, participants will not just understand Docker; they will have dockerised an application, composed a multi-service system, pushed and deployed their own image to a live server, broken it, fixed it, and restored it from backup.
Learning Outcomes
- Participants will be able to install and verify WSL2 and Docker Desktop on Windows and run basic terminal commands unaided.
- Participants will be able to describe how the Docker engine, images, containers, and Docker Hub work together.
- Participants will be able to write a Dockerfile to containerise a backend application and build a working image.
- Participants will be able to compose Nginx + backend + database + phpMyAdmin into a single working stack.
- Participants will be able to read container logs and diagnose common failures (port conflicts, containers that won't start, bad mounts).
- Participants will be able to configure restart policies and healthchecks so services recover automatically.
- Participants will be able to harden a deployment using non-root users, minimal images, and managed secrets.
- Participants will be able to back up a database and named volumes, then restore them on a fresh environment.
- Participants will be able to deploy a stack to a Linux server and redeploy a new version safely.
Prerequisites
No prior Docker, Linux, or command-line experience required — the programme starts from environment setup and terminal basics. Comfortable using a computer and installing software. Basic understanding of what web applications and databases are is an advantage (not required). Windows participants: a laptop running Windows 10/11 (64-bit) with administrator rights and hardware virtualisation enabled in BIOS/UEFI (needed for WSL2); macOS and Linux laptops are also fully supported. Minimum 8 GB RAM (16 GB recommended) and at least 10 GB free disk space. Stable internet connection for downloading WSL2, Docker Desktop, and images.
Course Outline
- What WSL2 is and why Windows needs it to run Docker.
- Turning on WSL2 and installing Ubuntu (guided, step by step).
- Installing Docker Desktop and VS Code, connected to your WSL2 Ubuntu.
- Verifying everything with docker run hello-world.
- Opening a terminal and running your first command.
- Finding your way: cd, ls, and how file paths work.
- Running a Docker command and reading its output (fixing typos).
- Opening your project in VS Code from WSL with code .
- Why containers? Problems they solve vs installing software directly.
- Virtual machines vs containers.
- The pieces: image, container, registry, and the Docker engine.
- The role of Docker Hub.
- docker run, ps, stop, rm — the container lifecycle.
- Pulling and running public images from Docker Hub.
- Listing, tagging, and inspecting images.
- Looking inside a running container with exec and logs.
- Core instructions: FROM, RUN, COPY, CMD, EXPOSE.
- Building and tagging a custom image.
- The build context and .dockerignore.
- Containerising a sample backend application.
- Why containers are ephemeral and why it matters.
- Named volumes vs bind mounts.
- Persisting database and application data.
- Inspecting and managing volumes.
- Write a Dockerfile for a provided backend service.
- Build, tag, and run it with port mapping.
- Persist its data with a named volume.
- Verify the running container and review.
- How containers talk to each other over a shared network.
- Reaching another container by its service name (no IP addresses).
- The pain of wiring a multi-container app by hand.
- Where Docker Compose fits in.
- Anatomy of docker-compose.yml (services, networks, volumes).
- up, down, ps, logs, exec.
- depends_on and start order.
- Environment files (.env) and configuration.
- Defining a MySQL/MariaDB service.
- Persisting database data with volumes.
- Database environment configuration and credentials.
- Wiring phpMyAdmin to the database for visual management.
- Building the backend service from your Dockerfile in Compose.
- Connecting the backend to the database over the Compose network.
- Configuration via environment variables.
- Reading the backend's logs to confirm it started and connected.
- Adding an Nginx service to the stack.
- Reverse-proxying requests to the backend.
- Serving static content and mounting config.
- Exposing the stack on a single public port.
- Reading per-service logs and spotting which service failed.
- Rebuilding and redeploying a single service after a change.
- Bringing the whole stack up and down cleanly (up -d, down).
- Keeping services running with restart: unless-stopped.
- Assemble Nginx + backend + database + phpMyAdmin in one Compose file.
- Bring the stack up and verify end-to-end.
- Break a service, read the logs, and fix it.
- Review and discussion.
- docker logs and docker compose logs to follow what a container is doing.
- Looking inside a stuck container with inspect and exec.
- Common failures: port already in use, bad mounts, missing environment variables.
- A repeatable troubleshooting checklist.
- Restart policies in depth.
- Writing HEALTHCHECK instructions.
- How healthchecks drive automatic recovery.
- Debugging a deliberately failing container.
- Running containers as a non-root user.
- Choosing minimal, trusted base images.
- Secrets vs plain environment variables.
- Keeping images updated and limiting exposed ports.
- Backing up named volumes (tar strategy).
- Dumping and restoring the database.
- Restoring data onto a fresh stack.
- Planning regular backups.
- Tagging and pushing your image to Docker Hub (docker login, push).
- Connecting to the shared training server over SSH.
- Pulling and running your image on your own assigned port.
- Opening your app at the server's address and confirming it's healthy.
- The safe redeploy workflow on the server: rebuild, push, pull, restart.
- Rolling back to a previous image tag.
- Pruning unused images and volumes.
- Checking your container is healthy (docker ps, docker stats, logs).
- Dockerise an application of your choice (a starter app is provided if you don't have one).
- Push and deploy your own image variant to the shared server.
- Troubleshoot, restart, and restore it from a backup to prove recoverability.
- Present your deployment and wrap-up.
Upcoming Sessions
There are currently no scheduled sessions for this course.
We'll notify you when new sessions are scheduled
Your Instructor
Docker for beginner
This programme gives beginners a complete, hands-on path to running real applications with Docker, from first container to a multi-service stack deployed on their own server. It focuses solely on Docker (no Kubernetes), trading breadth for the depth needed to make participants genuinely self-sufficient by the end of three days. The programme assumes no prior Linux or command-line experience.
Day 1 begins by setting up a working environment on Windows with WSL2 and Docker Desktop, plus a short terminal survival kit, before any Docker concept is introduced. The course is built around one realistic, recurring scenario: containerising and operating a web stack made of Nginx, a backend application, a database, and phpMyAdmin with Docker Compose. Every concept ; images, Dockerfiles, volumes, networking, logging, security, backup is taught in service of getting that stack running, troubleshooting it, securing it, recovering it, and redeploying it without fear.
By the end, participants will not just understand Docker; they will have dockerised an application, composed a multi-service system, pushed and deployed their own image to a live server, broken it, fixed it, and restored it from backup.
Learning Outcomes
- Participants will be able to install and verify WSL2 and Docker Desktop on Windows and run basic terminal commands unaided.
- Participants will be able to describe how the Docker engine, images, containers, and Docker Hub work together.
- Participants will be able to write a Dockerfile to containerise a backend application and build a working image.
- Participants will be able to compose Nginx + backend + database + phpMyAdmin into a single working stack.
- Participants will be able to read container logs and diagnose common failures (port conflicts, containers that won't start, bad mounts).
- Participants will be able to configure restart policies and healthchecks so services recover automatically.
- Participants will be able to harden a deployment using non-root users, minimal images, and managed secrets.
- Participants will be able to back up a database and named volumes, then restore them on a fresh environment.
- Participants will be able to deploy a stack to a Linux server and redeploy a new version safely.
Prerequisites
No prior Docker, Linux, or command-line experience required — the programme starts from environment setup and terminal basics. Comfortable using a computer and installing software. Basic understanding of what web applications and databases are is an advantage (not required). Windows participants: a laptop running Windows 10/11 (64-bit) with administrator rights and hardware virtualisation enabled in BIOS/UEFI (needed for WSL2); macOS and Linux laptops are also fully supported. Minimum 8 GB RAM (16 GB recommended) and at least 10 GB free disk space. Stable internet connection for downloading WSL2, Docker Desktop, and images.
Course Outline
- What WSL2 is and why Windows needs it to run Docker.
- Turning on WSL2 and installing Ubuntu (guided, step by step).
- Installing Docker Desktop and VS Code, connected to your WSL2 Ubuntu.
- Verifying everything with docker run hello-world.
- Opening a terminal and running your first command.
- Finding your way: cd, ls, and how file paths work.
- Running a Docker command and reading its output (fixing typos).
- Opening your project in VS Code from WSL with code .
- Why containers? Problems they solve vs installing software directly.
- Virtual machines vs containers.
- The pieces: image, container, registry, and the Docker engine.
- The role of Docker Hub.
- docker run, ps, stop, rm — the container lifecycle.
- Pulling and running public images from Docker Hub.
- Listing, tagging, and inspecting images.
- Looking inside a running container with exec and logs.
- Core instructions: FROM, RUN, COPY, CMD, EXPOSE.
- Building and tagging a custom image.
- The build context and .dockerignore.
- Containerising a sample backend application.
- Why containers are ephemeral and why it matters.
- Named volumes vs bind mounts.
- Persisting database and application data.
- Inspecting and managing volumes.
- Write a Dockerfile for a provided backend service.
- Build, tag, and run it with port mapping.
- Persist its data with a named volume.
- Verify the running container and review.
- How containers talk to each other over a shared network.
- Reaching another container by its service name (no IP addresses).
- The pain of wiring a multi-container app by hand.
- Where Docker Compose fits in.
- Anatomy of docker-compose.yml (services, networks, volumes).
- up, down, ps, logs, exec.
- depends_on and start order.
- Environment files (.env) and configuration.
- Defining a MySQL/MariaDB service.
- Persisting database data with volumes.
- Database environment configuration and credentials.
- Wiring phpMyAdmin to the database for visual management.
- Building the backend service from your Dockerfile in Compose.
- Connecting the backend to the database over the Compose network.
- Configuration via environment variables.
- Reading the backend's logs to confirm it started and connected.
- Adding an Nginx service to the stack.
- Reverse-proxying requests to the backend.
- Serving static content and mounting config.
- Exposing the stack on a single public port.
- Reading per-service logs and spotting which service failed.
- Rebuilding and redeploying a single service after a change.
- Bringing the whole stack up and down cleanly (up -d, down).
- Keeping services running with restart: unless-stopped.
- Assemble Nginx + backend + database + phpMyAdmin in one Compose file.
- Bring the stack up and verify end-to-end.
- Break a service, read the logs, and fix it.
- Review and discussion.
- docker logs and docker compose logs to follow what a container is doing.
- Looking inside a stuck container with inspect and exec.
- Common failures: port already in use, bad mounts, missing environment variables.
- A repeatable troubleshooting checklist.
- Restart policies in depth.
- Writing HEALTHCHECK instructions.
- How healthchecks drive automatic recovery.
- Debugging a deliberately failing container.
- Running containers as a non-root user.
- Choosing minimal, trusted base images.
- Secrets vs plain environment variables.
- Keeping images updated and limiting exposed ports.
- Backing up named volumes (tar strategy).
- Dumping and restoring the database.
- Restoring data onto a fresh stack.
- Planning regular backups.
- Tagging and pushing your image to Docker Hub (docker login, push).
- Connecting to the shared training server over SSH.
- Pulling and running your image on your own assigned port.
- Opening your app at the server's address and confirming it's healthy.
- The safe redeploy workflow on the server: rebuild, push, pull, restart.
- Rolling back to a previous image tag.
- Pruning unused images and volumes.
- Checking your container is healthy (docker ps, docker stats, logs).
- Dockerise an application of your choice (a starter app is provided if you don't have one).
- Push and deploy your own image variant to the shared server.
- Troubleshoot, restart, and restore it from a backup to prove recoverability.
- Present your deployment and wrap-up.
Upcoming Sessions
There are currently no scheduled sessions for this course.
We'll notify you when new sessions are scheduled
Course Information
Your Instructor
Ariff Bin Azman
Professional Experience