
Discover what a container is and how containerisation packages an application's code, libraries, and dependencies to run the same on any computer, enabling quick deployment and scalable systems using Docker.
Understand how containers isolate environments while sharing an OS for efficient CPU and RAM use, compared with VMs. Explore Docker Engine, OCI standards, and Docker tools like CLI and Compose.
Install Docker Desktop on macOS or Windows, following platform-specific steps, prerequisites, and enabling auto-start. On Linux, install Docker Engine from repositories and add your user to the Docker group.
Discover how a dockerfile defines container images as you build a container image for a psp application, inspect and extract information, then tag the image for public or targeted sharing.
Define a container with a Dockerfile by basing it on a base image, updating it, installing Apache and PHP, copying your project to /var/www/html, and running Apache in the foreground.
Build a Docker image from a Dockerfile using docker build with a tag in the current directory, then inspect the image with docker image inspect to view its tags.
Learn how to share a container image by uploading to a registry, tagging with a repository, logging into Docker Hub, and pushing to a public repository for others to pull.
Explore the world of containers, learn the difference between an image and a container, and practice creating, interacting with, stopping, and removing containers.
Run a container from a container image, observe an Apache web server start, learn to spawn multiple containers, and use port mapping to view the app at localhost:80.
Discover essential docker run flags to name, auto-remove, and run containers with interactive terminals, detached mode, and port mappings, then verify a web app accessible on localhost:8000.
Learn to run commands in a running container with docker exec and docker attach, open a shell, check software versions, detach without stopping, and remove containers after use.
Explore storage persistence in containers, learning how changes are written to containers and how bind mounts and volume mounts preserve data for WordPress and other containers, with backup and restore.
Create and mount a named volume to persist and share data across containers, writing files in one container and reading them in others; inspect the volume with docker volume inspect.
Use bind mounts to connect host directories or files to a running container, so changes to your code reflect immediately without rebuilding, enabling rapid development feedback.
Explore container networking in docker, assign IP addresses, and use drivers such as bridge, host, overlay, and mac reelin to connect containers. Focus on bridge networks for development and production.
Discover how host networking lets a container use the host network with the host driver, exposing port 80 on Linux Swarm since Docker 17.06.
Create and use a custom bridge network Net1 to connect web and database containers, inspect Net1, and verify the web app connects to the database.
Learn to manage multiple containers as microservices with docker compose by defining a yaml file of services and using it to start web server and database in development and production.
Create a compose file in YAML for your PSP project, defining services web, db, and admin with ports, volumes, and environment settings, and master spacing, indentation, and version 3.8.
Learn to manage project services with docker compose, create a project network, and run containers; access the app at localhost:8000 and the admin at localhost:8080, with database initialization and management.
Explore advanced technophile options, use the documentation for the Dukkha file, and apply best practices to create better, leaner, more efficient, and darker images with Dukkha file options.
Explore how to use the Docker documentation to navigate guides, get started tutorials, install Docker Engine and Docker Compose across Windows, Linux, and Mac, and prepare for Dockerfile best practices.
Master Dockerfile best practices to create ephemeral containers, manage build context with dotignore, and use multi-stage builds and minimal layers for smaller, easier-to-debug images.
Explore Dockerfile options from base images to commands like run, add, copy, env, plus cmd and entrypoint, and port exposure and user workdir choices.
Learn how to build a docker image from standard input to test commands without a dockerfile, by feeding a here-document with a base Alpine image and a tag.
Explore installing PHP extensions for containers, including official Docker images and OS-specific methods on Ubuntu and Red Hat family images, plus helper scripts for easy setup.
Learn to install PHP extensions on official PHP images from Docker Hub using helper scripts like install, configure, and enable; verify existing extensions on Debian and Alpine variants before installing.
Learn how to install php extensions on alpine and other distros using the normal method, compare it with official docker image scripts, and discover easier alpine packaging.
Learn to install PHP extensions with a helper project, using either the installer script or a Docker image, and base your Docker image on a PHP-friendly distro for dependencies.
In the complete containers course for developers, explore Podman, a rootless, daemonless container engine that rivals Docker, supports pods, replaces Docker, and integrates with systemd.
Install Podman on Linux with DNF or apt on Ubuntu. On Windows or Mac, run Podman in a VM via Podman Desktop and use the same Podman commands.
Replace docker with podman across Linux, Windows, and macOS by installing podman or podman desktop, removing docker if needed, and running a test container to verify nginx on localhost:8080.
Learn to run containers with Podman using create-and-start or direct run from an image, and manage volumes, bind mounts, ports, and commands inside running containers.
Enable docker compose with a podman backend on Linux by turning on the podman socket and exporting docker host, then run multi-container apps like WordPress and MariaDB for local development.
Learn how to create and manage podman pods, run a multi-container WordPress application with shared storage and network, and expose services using ports and bind mounts.
Launch multiple services in a container with systemd by building an image that runs apache httpd and php fpm, enable both with systemctl, and verify.
Learn to launch containers at boot with Podman using the always restart policy, expose ports, run Nginx, and enable the Podman restart service for both root and user sessions.
Run containers as systemd services with podman to auto-restart on reboot. Create rootless and root full web containers, map ports 2000 and 80, and generate systemd units to run nginx.
earn how to use containers to build, run, and manage real-world applications with Podman.
This is a practical, developer-focused course designed to take you beyond simply learning container commands. Instead of spending hours on theory, you'll learn how containers fit into the development workflow by working with real applications and different technology stacks.
You'll start with the fundamentals of containers, images, registries, and container engines, then gradually move into building your own container images, running applications, connecting services together, managing persistent data, and creating complete multi-container development environments.
Throughout the course, we'll use Podman as our primary container engine while also understanding its compatibility with the Docker ecosystem. If you're already familiar with Docker, you'll find many of the concepts and commands immediately familiar.
You'll work with several types of applications, including PHP, Node.js, Python, and modern frontend applications such as React and Next.js. You'll see that the same container concepts can be applied across completely different technology stacks.
We'll cover practical topics such as:
Understanding containers and how they differ from virtual machines
Working with container images and registries
Running and managing containers with Podman
Building images with Containerfiles
Containerizing existing applications
Mapping ports and configuring environment variables
Working with bind mounts and persistent volumes
Connecting containers through networks
Running applications alongside databases and other services
Creating multi-container development environments
Using Compose-based workflows with Podman
Containerizing PHP applications
Containerizing Node.js applications
Containerizing Python applications
Containerizing React and Next.js applications
Understanding development vs. production containers
Using multi-stage builds
Troubleshooting containers, networking, permissions, and application connectivity
Improving container images and development workflows
Understanding rootless containers and the practical advantages of Podman
The course will also explore an increasingly important use case for containers: local AI.
You'll learn how containers can be used to run AI workloads locally, including running an application that communicates with a locally hosted large language model (LLM). This gives you a practical introduction to using containers not only for traditional web applications, but also for modern AI-powered applications.
The goal isn't to turn you into a Kubernetes administrator or make you memorize every feature of Podman. Instead, the focus is on the skills developers actually need when they want to take an application they are working on and put it into a reliable, reproducible containerized environment.
By the end of the course, you won't just know what containers are—you'll be able to take a real application, containerize it, connect it to a database and other services, run the whole development environment locally, and even run an AI application using a local LLM.
Whether you're a PHP, Node.js, Python, React, or full-stack developer, this course will give you a practical foundation for incorporating containers into your everyday development workflow.