Docker and Kubernetes for Beginners
Package a small web app in a container, then run and update three copies of it on a Kubernetes cluster on your own computer.
One payment of $39. Instant online access to the full written course. No subscription. Refund policy.
You will be able to run ready-made containers, package your own app into an image, and run it on a local Kubernetes cluster with three copies, a stable address, outside settings, health checks, a safe update and a rollback. You finish with a project folder that another person can rebuild from your README.
Who it is for. Beginners who are comfortable typing basic commands in a terminal: developers in training, IT support and operations staff, career changers, students and makers who keep hearing about containers and Kubernetes and want to understand them properly.
You finish with. apex-hello on a Local Kubernetes Cluster. You deliver one project folder that holds a small web app, the Dockerfile that packages it, and the Kubernetes files that run three copies of it on a local minikube cluster. A README lists the exact commands, and an evidence file holds the real output of your own runs. The test is a fresh start: after you delete the cluster, someone can follow only your README and get the app running again. This is practice work on a local cluster, and you should say so plainly if you show it to anyone.
Certificate. Finish every lesson, resolve every quiz question with at least 50% right on the first try, and tick the capstone checklist — Apex Flow Academy issues a verifiable Certificate of Completion with a unique ID and a public verification page. It is a certificate of completion, not a degree, licence, accreditation or exam result.
01 · Meet Containers4 lessons
Learn what a container is, install a free container engine, run your first containers, and understand images, tags and registries. You also set up the project folder you will build on for the whole course.
- 1.1What a Container Is and What You Will BuildFREE
- 1.2Install a Free Container Engine
- 1.3Run Your First Containers
- 1.4Images, Tags and Registries
02 · Run and Manage Containers4 lessons
Keep containers running in the background, open their ports, look inside them, give them settings, and keep their data. By the end you run the apex-hello app in a container without building anything.
- 2.1Run a Web Server in the Background
- 2.2Look Inside a Running Container
- 2.3Give Containers Settings With Environment Variables
- 2.4Keep Data With Volumes and Bind Mounts
03 · Build Your Own Image4 lessons
Turn apex-hello into your own image with a Dockerfile. Learn how layers and the build cache speed up builds, what to keep out of an image, and how to make the container run as a safe user and stop cleanly.
- 3.1Your First Dockerfile
- 3.2Layers and the Build Cache
- 3.3What Goes In the Image: Context and .dockerignore
- 3.4Run Safely and Stop Cleanly
04 · Kubernetes: Your First Cluster and Pod4 lessons
Understand what Kubernetes does, start a free local cluster, read and write your first YAML manifest, and run your own apex-hello image in a Pod.
- 4.1What Kubernetes Does
- 4.2Start a Free Local Cluster
- 4.3Your First Pod From a YAML File
- 4.4Run Your Own Image in the Cluster
05 · Deployments, Services and Scaling4 lessons
Replace the lone Pod with a Deployment that keeps three copies alive, give them one stable address with a Service, scale them, size them, and feed them settings from a ConfigMap and a Secret.
- 5.1Deployments: Keep Copies Running
- 5.2Services: One Stable Address
- 5.3Scale Up: Copies Times Size
- 5.4Settings From a ConfigMap and a Secret
06 · Health, Updates, Debugging and the Capstone4 lessons
Teach Kubernetes how to tell when your app is healthy, ship a new version without downtime and roll it back, learn a repeatable way to debug, then prove the whole project works from a clean start.
- 6.1Health Checks: Readiness and Liveness
- 6.2Rolling Updates and Rollbacks
- 6.3A Debugging Routine You Can Repeat
- 6.4Assemble, Prove and Clean Up
What a Container Is and What You Will Build
You will be able to
- Explain in one sentence what a container is.
- Say why teams use containers.
- Describe the app you will ship in this course.
Why this matters
Almost every software team uses containers. Job posts ask for them by name. You will type many commands in this course, and each one is easier to remember when you know the idea underneath.
Learn it
An app needs more than its own code. It needs a language runtime, extra libraries, settings and files in the right places. Change any one of these and the app can break. This is where the old complaint 'it works on my machine' comes from.
A container is a box that holds an app and everything the app needs to run. The box runs as an ordinary process on your computer. Inside it, the app sees only its own files, its own network and its own list of processes. That separation is called isolation.
Think of a shipping container. The crane does not care what is inside. The box has a standard shape, so it moves from ship to truck to train without changes. A software container works the same way. It runs the same on your laptop, on a teammate's laptop and on a server.
You may have heard of virtual machines. A virtual machine (VM) pretends to be a whole computer with its own operating system. A container does not. Containers share the core of the host's operating system, called the kernel. So they start in seconds and use less memory. The price is that they are isolated less strongly than a VM.
Most containers you will meet are Linux containers. On Windows and Mac, the tools quietly start a small Linux helper machine to run them. You do not need to manage it.
Two names matter in this course:
- Docker is the most popular tool for building and running containers.
- Kubernetes runs many containers on one or more computers and keeps them healthy.
We start with Docker, because Kubernetes runs containers. It is hard to manage what you do not understand.
How the course works. Every lesson has the same six parts. Type the commands yourself. Where we show output, yours will differ in ids, times and sizes. That is normal. Look for the shape, not the exact characters.
What you will build. A tiny web app called apex-hello. When you open it, it prints a greeting, the name of the machine it runs on, a visit count and a version number. You will:
- Run ready-made containers (Modules 1 and 2).
- Package
apex-hellointo your own image (Module 3). - Run three copies of it on a Kubernetes cluster on your own computer (Modules 4 to 6).
See it in action
Example (illustrative): Ana writes a small app that needs Python 3.13. Ben's laptop has Python 3.8.
Without a container:
- Ana sends Ben the code and a note that says 'install Python 3.13'.
- Ben installs it. Now his other project stops working.
- Ben installs a library. It is the wrong version. He loses an hour.
With a container:
- Ana packs the app, Python 3.13 and the libraries into one package.
- Ana sends Ben the name of the package.
- Ben runs one command. The app starts, and it behaves the way it did for Ana.
Ben never installed Python 3.13. He did not touch his other project. Everything the app needed travelled inside the box. That is the whole idea. The rest of this course is about how to build the box, run it, and run many of them.
Common mistakes
- Thinking a container is a small virtual machine. Why: both feel like 'another computer'. Fix: remember that a container is one isolated process that shares the host's kernel.
- Thinking Docker and Kubernetes compete. Why: both appear in the same job posts. Fix: Docker builds and runs containers. Kubernetes manages many of them.
- Skipping the typing. Why: the commands look easy. Fix: type each one. Your hands remember what your eyes skip.
You are done when
You can say out loud, without looking, what a container is: a box that holds an app and what it needs. Then add how it runs, as an isolated process. You can also name the four things the apex-hello page shows: a greeting, a machine name, a visit count and a version.
You finished the free lesson
That is one lesson from the course. The full course gives you every remaining lesson, a quick check and a hands-on task in each one, and the workbook of templates and checklists.
Full course$39
- A 64-bit computer running Windows 10 or 11, macOS or Linux, with about 20 GB of free disk space. Docker lists 8 GB of memory for Docker Desktop on Windows, and minikube needs at least 2 GB free, so 8 GB or more is a comfortable target.
- Hardware virtualization turned on in your computer's settings, if your system needs it (many Windows PCs ship with it off).
- A container engine. Free options: Docker Engine on Linux (open source), Docker Desktop on Windows and Mac (free for personal use, education, non-commercial open source and small businesses; larger companies need a paid plan), or Rancher Desktop on any system (open source). Check the current terms before you rely on any of them.
- minikube and kubectl. Both are free and open source.
- A plain text editor (any free editor works) and a web browser.
- An internet connection to download images. Docker Hub limits how often anonymous users can pull images, so a free Docker account can help, but it is not required.
- Nothing in this course needs a paid subscription. If your employer is a large company, ask which container tool is approved, or use the open-source route.
- You can open a terminal (PowerShell, Command Prompt, Terminal or a Linux shell) and run simple commands such as cd and ls or dir.
- You can create and edit plain text files.
- You know what a web page and a URL are.
- No programming is needed. The small app is given to you, and you only read a little of it.
apex-hello on a Local Kubernetes Cluster
You deliver one project folder that holds a small web app, the Dockerfile that packages it, and the Kubernetes files that run three copies of it on a local minikube cluster. A README lists the exact commands, and an evidence file holds the real output of your own runs. The test is a fresh start: after you delete the cluster, someone can follow only your README and get the app running again. This is practice work on a local cluster, and you should say so plainly if you show it to anyone.
- app.py, requirements.txt, Dockerfile and .dockerignore, with an image built as apex-hello:1.0 that runs as a non-root user and uses the exec form of CMD.
- k8s/configmap.yaml, k8s/deployment.yaml and k8s/service.yaml: three replicas, matching selector and labels, resource requests and limits, a readiness probe and a liveness probe, and settings from a ConfigMap and a Secret.
- k8s/examples with your practice files, kept out of the folder that kubectl apply reads.
- README.md with the exact commands to start the cluster, build, load the image, create the Secret, apply, wait, test, update, roll back and clean up.
- EVIDENCE.md with pasted output: 3/3 ready, three Running Pods, three Service endpoints, a six-request test that shows at least two Pod names, a rollout to 1.1 and a rollback to 1.0, and a short reflection on three mistakes and their fixes.
- FIELD-NOTES.md with your notes from all six modules.
- Container
- A box that holds an app and everything it needs to run. It runs as an isolated process on your computer.
- Image
- A read-only package that holds the files and settings needed to start a container. One image can start many containers.
- Registry
- An online library of images. Docker Hub is the default one.
- Tag
- The label after the colon in an image name, such as 3.13-slim. It names a version.
- Engine
- The background program that actually runs containers. The docker command talks to it.
- Port
- A numbered door on a computer. Programs listen on ports, and -p opens a door from your computer into a container.
- Volume
- Storage that Docker manages and keeps after a container is removed. Good for data.
- Bind mount
- A link that shows a folder from your computer inside a container. Good for code you are editing.
- Environment variable
- A named setting, like GREETING=Howdy, that a program reads when it starts.
- Dockerfile
- A text file of instructions, one per line, that tells Docker how to build an image.
- Layer
- One saved step of an image build. An image is a stack of layers, and Docker reuses layers that did not change.
- Build context
- The folder of files that a docker build is allowed to copy from.
Browse the full Academy encyclopedia
16 checks were run and recorded while writing this course (code, formulas, commands and facts), and it lists 58 official sources it was checked against. Prices, features and policies of outside tools can change, so check each tool's own website.
Created by Apex Flow Academy with AI assistance. For education only; not legal, tax, financial or medical advice. Results depend on your effort and circumstances.
Python From Zero: Write Programs That Work
You write and run real Python programs from the first lesson, and you finish with three small working tools that you built yourself, tested with checks you wrote, and can change without starting over.
Python Automation: Make the Computer Do Your Boring Work
You automate files, spreadsheets, email drafts and web lookups that eat your week. You finish with your own script that plans before it acts, keeps a log, is tested against sample data, and runs on a schedule.
SQL: Ask Any Database Any Question
You will be able to write SQL that answers business questions from a database: choose and sort columns, filter rows, summarise and group, join tables, and check that your numbers are right. You finish with a report you built and checked yourself.