📖 Scenario: You are a developer who wants to share a simple web app with your friend. But your friend has a different computer setup. You want to make sure the app runs exactly the same on both computers.
🎯 Goal: Build a Docker container that runs a simple web server. This shows how containers keep apps working the same everywhere.
📋 What You'll Learn
Create a Dockerfile that uses the official Python image
Add a simple Python web server script inside the container
Expose port 8000 to access the web server
Run the container and see the web server output
💡 Why This Matters
🌍 Real World
Containers let developers share apps that run the same on any computer, avoiding setup problems.
💼 Career
Understanding containers is key for DevOps roles to deploy and manage applications reliably.
Progress0 / 4 steps
1
Create a simple Python web server script
Create a file named app.py with this exact code: from http.server import SimpleHTTPRequestHandler, HTTPServer
server = HTTPServer(('0.0.0.0', 8000), SimpleHTTPRequestHandler)
server.serve_forever()
Docker
Hint
This script starts a simple web server on port 8000 that serves files from the current folder.
2
Write a Dockerfile to containerize the app
Create a file named Dockerfile with these exact lines: FROM python:3.12-slim
COPY app.py /app.py
EXPOSE 8000
CMD ["python", "/app.py"]
Docker
Hint
The Dockerfile tells Docker which base image to use, copies your app, opens port 8000, and runs the app.
3
Build the Docker image
Run the exact command docker build -t simple-web . in your terminal to build the Docker image named simple-web.
Docker
Hint
This command tells Docker to build an image from the current folder and name it simple-web.
4
Run the Docker container and check output
Run the exact command docker run -p 8000:8000 simple-web and then open http://localhost:8000 in your browser. Write SimpleHTTPServer as the output you see in the terminal logs.
Docker
Hint
Running the container starts the web server. The terminal shows SimpleHTTPServer in the logs.
Practice
(1/5)
1. Why do containers matter in software development?
easy
A. They make applications run only on specific machines.
B. They package applications with all needed parts to run anywhere.
C. They slow down the deployment process.
D. They require manual setup on every new machine.
Solution
Step 1: Understand container packaging
Containers bundle the app with all its dependencies, so it can run anywhere without missing parts.
Step 2: Compare with other options
Unlike manual setups or machine-specific installs, containers ensure consistency and portability.
Final Answer:
They package applications with all needed parts to run anywhere. -> Option B
Quick Check:
Containers = portable app packages [OK]
Hint: Containers bundle apps with dependencies for easy running [OK]
Common Mistakes:
Thinking containers only work on specific machines
Believing containers slow down deployment
Assuming manual setup is needed every time
2. Which of the following is the correct Docker command to run a container from an image named myapp?
easy
A. docker run myapp
B. docker start myapp
C. docker build myapp
D. docker push myapp
Solution
Step 1: Identify the command to run a container
The docker run command creates and starts a container from an image.
Step 2: Understand other commands
docker start starts an existing container, docker build creates an image, and docker push uploads an image to a registry.
Final Answer:
docker run myapp -> Option A
Quick Check:
Run container = docker run [OK]
Hint: Use 'docker run' to start containers from images [OK]
Common Mistakes:
Confusing 'docker start' with 'docker run'
Using 'docker build' to run containers
Trying to 'docker push' to run locally
3. What will be the output of the command docker ps right after running docker run -d nginx?
medium
A. Error message: nginx image not found.
B. List of all stopped containers only.
C. List of all running containers including the new nginx container.
D. No output, command does nothing.
Solution
Step 1: Understand docker run -d nginx
This command runs the nginx container in detached mode (in the background).
Step 2: Understand docker ps
docker ps shows all running containers, so it will list the new nginx container.
Final Answer:
List of all running containers including the new nginx container. -> Option C
Quick Check:
docker ps = running containers [OK]
Hint: 'docker ps' shows running containers only [OK]
Common Mistakes:
Expecting stopped containers to show in 'docker ps'
Thinking 'docker run' fails without image pull
Assuming 'docker ps' shows nothing
4. You tried to run docker run myapp but got an error: Unable to find image 'myapp:latest' locally. What is the likely fix?
medium
A. Build the image locally using docker build before running.
B. Run docker stop myapp first.
C. Use docker push myapp to download the image.
D. Restart Docker service to fix the error.
Solution
Step 1: Understand the error message
The error means Docker cannot find the image locally and cannot pull it from a registry.
Step 2: Fix by building the image
You need to create the image locally with docker build before running it.
Final Answer:
Build the image locally using docker build before running. -> Option A
Quick Check:
Image missing = build image first [OK]
Hint: Build missing images locally before running containers [OK]
Common Mistakes:
Trying to stop a container that doesn't exist
Using 'docker push' to download images
Restarting Docker without checking image
5. You want to share your app with a teammate so they can run it exactly as you do. Which container feature helps most with this?
hard
A. Containers slow down app startup, making sharing harder.
B. Containers require teammates to install all dependencies manually.
C. Containers only work on the original developer's machine.
D. Containers package the app with all dependencies for consistent sharing.
Solution
Step 1: Identify the sharing problem
Sharing apps often fails due to missing dependencies or environment differences.
Step 2: Use containers for consistent environments
Containers bundle the app and all needed parts, so teammates get the exact same setup.
Final Answer:
Containers package the app with all dependencies for consistent sharing. -> Option D
Quick Check:
Containers = consistent app sharing [OK]
Hint: Containers ensure same app setup for everyone [OK]
Common Mistakes:
Thinking teammates must install dependencies manually
Believing containers are machine-specific
Assuming containers slow down sharing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.