Bird
Raised Fist0
Microservicessystem_design~20 mins

Docker basics review in Microservices - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Docker Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Docker Image Layers

Which statement best describes how Docker image layers work?

ALayers are stacked and share common files, so changes create new layers without duplicating unchanged data.
BEach layer is a complete copy of the entire image, making images large but independent.
CDocker images do not use layers; each image is a single file containing all data.
DLayers are only used during build time and discarded after the container starts.
Attempts:
2 left
💡 Hint

Think about how Docker saves space and speeds up builds by reusing parts.

Architecture
intermediate
2:00remaining
Docker Container Networking Basics

In a typical Docker setup, how do containers communicate with each other on the same host?

AContainers use the host's network stack directly without isolation.
BContainers cannot communicate with each other unless exposed to the internet.
CEach container has a unique public IP address assigned by Docker for direct communication.
DContainers communicate over a virtual bridge network created by Docker, allowing isolated but connected communication.
Attempts:
2 left
💡 Hint

Think about how Docker isolates containers but still allows them to talk inside the same machine.

scaling
advanced
2:00remaining
Scaling Microservices with Docker Containers

You have a microservice running in a Docker container that needs to handle increased traffic. Which approach best supports scaling this service?

ARun the container in privileged mode to allow it to use more host resources automatically.
BRun multiple instances of the container across different hosts and use a load balancer to distribute traffic.
CIncrease the CPU and memory limits of the single container to handle more requests.
DModify the container image to include all dependencies and restart it to refresh resources.
Attempts:
2 left
💡 Hint

Think about horizontal scaling and distributing load.

tradeoff
advanced
2:00remaining
Tradeoffs of Using Docker Volumes vs Bind Mounts

When persisting data for Docker containers, what is a key tradeoff between using Docker volumes and bind mounts?

ABind mounts automatically backup data; volumes require manual backup.
BBind mounts are encrypted by default; volumes are stored in plain text on the host.
CVolumes are managed by Docker and offer better portability; bind mounts directly map host files but can cause permission issues.
DVolumes cannot be shared between containers; bind mounts can be shared easily.
Attempts:
2 left
💡 Hint

Consider management, portability, and permission differences.

estimation
expert
2:00remaining
Estimating Docker Container Resource Needs

You plan to deploy 100 Docker containers running a CPU-intensive microservice on a server with 64 CPU cores and 256 GB RAM. Each container requires 0.5 CPU cores and 2 GB RAM. What is the minimum number of such servers needed to run all containers without resource contention?

A1 server
B4 servers
C3 servers
D2 servers
Attempts:
2 left
💡 Hint

Calculate total CPU and RAM needed, then divide by server capacity.

Practice

(1/5)
1. What is the main purpose of Docker in microservices architecture?
easy
A. To replace the need for servers entirely
B. To write application code faster
C. To package applications with all dependencies for consistent deployment
D. To monitor network traffic between services

Solution

  1. Step 1: Understand Docker's role

    Docker packages applications with their dependencies to ensure they run the same everywhere.
  2. Step 2: Compare options

    Only To package applications with all dependencies for consistent deployment describes packaging apps with dependencies; others describe unrelated tasks.
  3. Final Answer:

    To package applications with all dependencies for consistent deployment -> Option C
  4. Quick Check:

    Docker packages apps = B [OK]
Hint: Docker bundles apps and dependencies for consistent runs [OK]
Common Mistakes:
  • Thinking Docker replaces servers
  • Confusing Docker with coding tools
  • Assuming Docker monitors network
2. Which Docker command is used to create a new image from a Dockerfile?
easy
A. docker run
B. docker start
C. docker push
D. docker build

Solution

  1. Step 1: Identify command purpose

    docker build creates an image from a Dockerfile.
  2. Step 2: Eliminate other commands

    docker run starts containers, docker start restarts stopped containers, docker push uploads images to a registry.
  3. Final Answer:

    docker build -> Option D
  4. Quick Check:

    Build = create image [OK]
Hint: Build creates images; run starts containers [OK]
Common Mistakes:
  • Using docker run to create images
  • Confusing docker start with build
  • Thinking docker push creates images
3. Given this Docker command sequence, what happens?
docker build -t myapp .
docker run -d --name app1 myapp
medium
A. Builds an image named myapp and runs it detached as container app1
B. Runs a container named myapp and builds app1 image
C. Builds a container named myapp and runs it interactively
D. Fails because -d and --name cannot be used together

Solution

  1. Step 1: Analyze docker build command

    docker build -t myapp . creates an image tagged 'myapp' from current directory.
  2. Step 2: Analyze docker run command

    docker run -d --name app1 myapp runs container named 'app1' in detached mode from image 'myapp'.
  3. Final Answer:

    Builds an image named myapp and runs it detached as container app1 -> Option A
  4. Quick Check:

    Build image then run container detached = A [OK]
Hint: Build tags image; run starts container with name and mode [OK]
Common Mistakes:
  • Mixing image and container names
  • Thinking -d disables naming
  • Confusing build and run order
4. Identify the error in this Docker command:
docker run --name mycontainer -p 8080 myimage
medium
A. Port mapping syntax is incomplete
B. Missing container name
C. Image name is missing
D. Cannot use -p with --name

Solution

  1. Step 1: Check port mapping syntax

    -p 8080 is incomplete; it should specify host and container ports like -p 8080:80.
  2. Step 2: Verify other parts

    Container name and image name are present; no restriction on using -p with --name.
  3. Final Answer:

    Port mapping syntax is incomplete -> Option A
  4. Quick Check:

    Port mapping needs host:container format [OK]
Hint: Port mapping needs host:container format [OK]
Common Mistakes:
  • Omitting container port in -p
  • Assuming image name is missing
  • Thinking -p and --name conflict
5. You want to deploy multiple microservices using Docker containers on one host. Which approach best ensures isolation and easy management?
hard
A. Run all microservices inside a single container
B. Use separate containers for each microservice with individual Dockerfiles
C. Install all microservices directly on the host OS without containers
D. Use one container per microservice but share the same network and volumes without isolation

Solution

  1. Step 1: Understand container isolation

    Each microservice should run in its own container for isolation and independent management.
  2. Step 2: Evaluate options

    Use separate containers for each microservice with individual Dockerfiles uses separate containers with individual Dockerfiles, enabling isolation and scalability. Run all microservices inside a single container mixes services, reducing isolation. Install all microservices directly on the host OS without containers lacks container benefits. Use one container per microservice but share the same network and volumes without isolation shares resources without isolation.
  3. Final Answer:

    Use separate containers for each microservice with individual Dockerfiles -> Option B
  4. Quick Check:

    Separate containers = isolation + management [OK]
Hint: One container per microservice for isolation and scaling [OK]
Common Mistakes:
  • Running all services in one container
  • Skipping containers and installing on host
  • Sharing networks and volumes without isolation