Bird
Raised Fist0
Dockerdevops~20 mins

Container health checks in Docker - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Container Health Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
What is the output of the health check status command?
You have a Docker container running with a health check configured. You run the command docker inspect --format='{{.State.Health.Status}}' mycontainer. What output do you expect if the container is healthy?
Astarting
Bunhealthy
Chealthy
Dexited
Attempts:
2 left
💡 Hint
Think about the possible health states Docker reports.
🧠 Conceptual
intermediate
1:30remaining
Which Dockerfile instruction defines a health check?
In a Dockerfile, which instruction is used to define a container health check?
ASTATUSCHECK
BHEALTHCHECK
CRUNHEALTH
DCHECKHEALTH
Attempts:
2 left
💡 Hint
It is a single word instruction starting with HEALTH.
❓ Configuration
advanced
2:00remaining
Identify the correct health check configuration in Dockerfile
Which of the following Dockerfile snippets correctly configures a health check that runs curl -f http://localhost/ || exit 1 every 30 seconds with a timeout of 10 seconds?
AHEALTHCHECK CMD curl -f http://localhost/ || exit 1 --interval=30s --timeout=10s
BHEALTHCHECK --timeout=10s --interval=30s RUN curl -f http://localhost/ || exit 1
CHEALTHCHECK CMD --interval=30s --timeout=10s curl -f http://localhost/ || exit 1
DHEALTHCHECK --interval=30s --timeout=10s CMD curl -f http://localhost/ || exit 1
Attempts:
2 left
💡 Hint
Options flags come immediately after HEALTHCHECK, before CMD.
❓ Troubleshoot
advanced
2:00remaining
Why does the health check always show 'starting' status?
You configured a health check in your Docker container, but docker inspect always shows the status as starting. What is the most likely cause?
AThe health check command never exits or takes longer than the timeout
BThe container is stopped and not running
CThe Docker daemon is not running
DThe health check command is missing from the Dockerfile
Attempts:
2 left
💡 Hint
Think about what 'starting' means in health check lifecycle.
✅ Best Practice
expert
2:30remaining
What is the best practice for health check command exit codes?
For Docker container health checks, which exit code convention should the health check command follow to indicate a healthy or unhealthy state?
AExit code 0 means healthy; any non-zero exit code means unhealthy
BExit code 1 means healthy; exit code 0 means unhealthy
CExit code 2 means healthy; exit code 1 means unhealthy
DExit code 0 means unhealthy; exit code 1 means healthy
Attempts:
2 left
💡 Hint
Think about standard Unix command exit codes.

Practice

(1/5)
1. What is the main purpose of a HEALTHCHECK in a Docker container?
easy
A. To restart the Docker daemon automatically
B. To update the container's image
C. To check if the container's application is running correctly
D. To increase the container's CPU usage

Solution

  1. Step 1: Understand the role of HEALTHCHECK

    The HEALTHCHECK instruction runs a command inside the container to verify if the app is working properly.
  2. Step 2: Identify what HEALTHCHECK does not do

    It does not restart Docker daemon, update images, or increase CPU usage.
  3. Final Answer:

    To check if the container's application is running correctly -> Option C
  4. Quick Check:

    HEALTHCHECK verifies app status = B [OK]
Hint: HEALTHCHECK tests app inside container, not Docker itself [OK]
Common Mistakes:
  • Confusing HEALTHCHECK with Docker daemon restart
  • Thinking HEALTHCHECK updates images
  • Assuming HEALTHCHECK changes resource usage
2. Which of the following is the correct syntax to add a health check in a Dockerfile?
easy
A. HEALTHCHECK CMD curl -f http://localhost/ || exit 1
B. HEALTHCHECK RUN curl -f http://localhost/ || exit 1
C. HEALTHCHECK EXEC curl -f http://localhost/ || exit 1
D. HEALTHCHECK CHECK curl -f http://localhost/ || exit 1

Solution

  1. Step 1: Recall Dockerfile HEALTHCHECK syntax

    The correct syntax uses HEALTHCHECK CMD followed by the command to run.
  2. Step 2: Identify incorrect keywords

    RUN, EXEC, CHECK are not valid keywords for HEALTHCHECK instruction.
  3. Final Answer:

    HEALTHCHECK CMD curl -f http://localhost/ || exit 1 -> Option A
  4. Quick Check:

    HEALTHCHECK uses CMD keyword = C [OK]
Hint: HEALTHCHECK always uses CMD keyword in Dockerfile [OK]
Common Mistakes:
  • Using RUN instead of CMD in HEALTHCHECK
  • Using EXEC or CHECK which are invalid
  • Omitting CMD keyword entirely
3. Given this Dockerfile snippet:
HEALTHCHECK CMD curl -f http://localhost/health || exit 1
CMD ["./start-server.sh"]

What will be the health status if curl fails?
medium
A. unhealthy
B. unknown
C. starting
D. healthy

Solution

  1. Step 1: Understand HEALTHCHECK command behavior

    If the command returns a non-zero exit code (like exit 1), Docker marks the container as unhealthy.
  2. Step 2: Analyze the curl failure effect

    Since curl -f fails, it triggers exit 1, so health status becomes unhealthy.
  3. Final Answer:

    unhealthy -> Option A
  4. Quick Check:

    Failed HEALTHCHECK command = unhealthy [OK]
Hint: Failed health check command sets status to unhealthy [OK]
Common Mistakes:
  • Assuming failure means healthy
  • Confusing 'starting' with unhealthy
  • Thinking status stays unknown on failure
4. You wrote this in your Dockerfile:
HEALTHCHECK CMD curl http://localhost/health || exit 1

But your container health status is always starting. What is the likely problem?
medium
A. The container has no network access
B. The HEALTHCHECK syntax is invalid
C. Docker daemon is not running
D. The health check command never succeeds within the start period

Solution

  1. Step 1: Understand 'starting' health status meaning

    'starting' means the container is still within the initial grace period before health checks are considered final.
  2. Step 2: Analyze why health check stays 'starting'

    If the command never succeeds during this period, Docker keeps status as 'starting'. Syntax is correct, Docker daemon running, and network likely accessible.
  3. Final Answer:

    The health check command never succeeds within the start period -> Option D
  4. Quick Check:

    Failing health check in start period = starting [OK]
Hint: Starting means health check not yet passed in grace period [OK]
Common Mistakes:
  • Assuming syntax error causes 'starting' status
  • Blaming Docker daemon when it runs fine
  • Ignoring network issues but they are less likely here
5. You want to create a health check that retries 3 times before marking unhealthy and waits 10 seconds between checks. Which Dockerfile snippet correctly sets this up?
hard
A. HEALTHCHECK --timeout=10s --retries=3 CMD curl -f http://localhost/health || exit 1
B. HEALTHCHECK --interval=10s --retries=3 CMD curl -f http://localhost/health || exit 1
C. HEALTHCHECK --interval=3s --retries=10 CMD curl -f http://localhost/health || exit 1
D. HEALTHCHECK --start-period=10s --retries=3 CMD curl -f http://localhost/health || exit 1

Solution

  1. Step 1: Identify correct flags for interval and retries

    --interval sets wait time between checks; --retries sets how many failures before unhealthy.
  2. Step 2: Match values to requirements

    We want 10 seconds between checks and 3 retries, so --interval=10s --retries=3 is correct. Timeout and start-period are different settings.
  3. Final Answer:

    HEALTHCHECK --interval=10s --retries=3 CMD curl -f http://localhost/health || exit 1 -> Option B
  4. Quick Check:

    Interval=10s and retries=3 flags = A [OK]
Hint: Use --interval for wait, --retries for failure count [OK]
Common Mistakes:
  • Confusing timeout with interval
  • Swapping retries and interval values
  • Using start-period instead of interval
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard